collect2:致命错误:ld以信号9终止[已杀]

时间:2017-09-17 01:04:34

标签: ubuntu gcc ld

我正在尝试在Ubuntu 16.04.3 x64上构建precimonious。我为它分配了1GB内存。我的文件结构类似于

~
|--- llvm/
|--- precimonious/

其中llvm在版本3.0上,如https://github.com/corvette-berkeley/precimonious#requirement所述。然后我按照README上的步骤操作,但命令make

结束
...
llvm[1]: Linking Debug Shared Library libLLVM-3.0.so
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.
...

我在网上得到了一些答案,他们说这可能是因为没有足够的内存来执行链接。但内存使用情况就像 enter image description here

我的计算机上的gcc版本为gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4),并通过apt-get install build-essential安装。这是我刚刚在DigitalOcean btw上创建的新鲜水滴。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:1)

有时,由于CPU过载,系统会杀死链接器。如果您的构建是并行的,请尝试使用-l选项(make和ninja支持它)。 Looks与您的情况类似。

要减少系统负载,请构建llvm的发行版本。链接调试版本要昂贵得多。

  

llvm [1]:链接调试共享库libLLVM-3.0.so

答案 1 :(得分:0)

内存耗尽。内存测量的采样间隔不够小,无法覆盖OOM杀手的确切位置。

根据容器/ VM技术,您可以在构建之前设置vm.overcommit_memory=2,这样就不会终止进程(但这样做实际上需要更多内存和交换空间才能完成构建) )。

答案 2 :(得分:0)

我遇到了这个问题,并通过以下方法解决了

  • 增加SWAP磁盘(与我一起使用8 GB)。
  • 增加内存(我在8 GB的虚拟机上)。
  • 您需要27 GB(LLVM 6.0.0)可用磁盘空间(在终端中用df -h检查)。

答案 3 :(得分:0)

您可以使用以下方法解决此问题:

 cargo run --release --verbose --jobs 1