上一篇详细描述了如何进行LLVM编译器的安装,这里记录一下debug版本的安装。
那么为什么要装debug版本的呢?为了进行gdb调试。
其实编译步骤并没有改动这里不再详细说明,可参考https://blog.youkuaiyun.com/weixin_43971060/article/details/104305177
唯一的不同是要将 步骤5)LLVM的安装 中第三步cmake构建类型改成Debug即可:
cmake -DCMAKE_BUILD_TYPE=Debug -DLLVM_INCLUDE_TESTS=OFF ../src
以下是我在安装时遇到的问题:
问题一:设备上没有空间
设备上没有足够的内存,要知道debug版的LLVM中build文件安装好后大概有70G,我之前虽然分配了100G,但是LLVM安装在/home目录下,而我这个目录实际上我只分了26G,所以要不然就在安装虚拟机时候一步到位分大点儿,要不然就在这个基础上进行扩容,参考:https://www.cnblogs.com/x_wukong/p/9289880.html
重新分配了内存,这里我给/home扩了100G,问题一解决不再报错
问题二:collect2: fatal error: ld terminated with signal 9 [已杀死]
原因:swap分区不够
解决办法:
sudo dd if=/dev/zero of=/swapfile bs=64M count=480
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=30G
sudo mkswap /swapfile
#把刚才空间格式化成swap格式
sudo swapon /swapfile
#使用刚才创建的swap空间进行编译
#编译后不想要这个分区的话可以关掉
sudo swapoff /swapfile
sudo rm /swapfile
以上就是自己在笔记本安装时候遇到的问题,最后我要说下这个编译时间,我开了4个线程刚编译到100%的时候进程开始及其慢,中间以为是我电脑硬件配置不行手痒掐掉了进程,唉。
其实它慢是很正常的,LLVM采用 LTO(链接时优化),通过全程序分析以及跨模块优化,实现更好的运行时性能的方法。在编译阶段,clang发布LLVM字节码,而不是目标文件。实践中这意味着LTO经常要求大量的内存(一次放下所有的IR)并且非常慢。编译debug版本激活调试信息,IR的大小与由此而来的内存要求显著增加。
总之,在心平气的开了4个线程让他编了两天两夜终于完成了。
gdb终于可以读出调试信息啦: