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

问题描述 投票:1回答:2

我正在尝试在Ubuntu 16.04.3 x64上构建precimonious。我为它分配了1GB内存。我的文件结构看起来像

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

https://github.com/corvette-berkeley/precimonious#requirement中提到的llvm版本3.0。然后我按照自述文件中的步骤操作,但命令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上创建的新鲜水滴。任何帮助表示赞赏。

ubuntu gcc ld
2个回答
1
投票

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.