LLVM: collect2: error: ld terminated with signal 9 [Killed]

使用虚拟机CentOS 64, 根据 http://clang.llvm.org/get_started.html一步一步地编译LLVM+Clang,

编译LLVM总是出现错误:

collect2: error: ld terminated with signal 9 [Killed]

首先检查了虚拟机的硬盘,通过df命令发现硬盘已经100%,于是扩展硬盘40G。只再VMWare界面扩展没有用,可以参考https://www.linuxidc.com/Linux/2011-02/32083.htm,将扩展的硬盘mount到系统上。

仍然出现同样的编译错误,网上搜索了一下,错误可能是由于交换区空间不足导致,扩展交换区大小即可。具体可以参考:https://www.cyberciti.biz/faq/ubuntu-linux-create-add-swap-file/

不过,我根据这些信息修改了,还是不能够编译通过。

后来,买了一块4G内存条,启动VMWare虚拟机时,给虚拟机分配4G内存,编译的时间缩短了很多,不过,依然再93%时连接Clang出现连接错误。

“ [ 93%] Linking CXX shared library ../../../../lib/libclang.so
../../../../lib/libclangStaticAnalyzerCheckers.a: error adding symbols: Memory exhausted

collect2: error: ld returned 1 exit status

看了有的帖子,说切换到命令行模式下,可以成功。尝试了,依然失败。

就在束手无策时,发现LLVM的指导网页(http://clang.llvm.org/get_started.html)上指定的编译选项是Debug模式,Debug模式比Release模式要大很多,消耗的资源也很大,于是就尝试把cmake的编译选项改成release,修改的命令为:

扫描二维码关注公众号,回复: 3671900 查看本文章

cmake -DCMAKE_BUILD_TYPE:String=Release ../llvm/

然后再在build目录下运行 make 命令,编译成功。

哎,在Linux系统下编译LLVM+Clang,真累。。。。。。

不过,LLVM确实是个好东东。

后续: 在OpenSuse Linux上,使用deubg模式依然失败,即使有足够的硬盘和内存。 使用release模式,编译成功。

幸运的是,Mac OS系统自带了LLVM了,不需要再费这么多力气安装,可以直接使用。

猜你喜欢

转载自blog.csdn.net/jimmyleeee/article/details/79400829