Linux swap 空间不足导致编译Clang失败 ERROR: make collect2: ld terminated with signal 9

7 篇文章 0 订阅

Linux swap 空间不足导致编译Clang失败


环境介绍

  • 联想笔记本电脑
  • i5处理器
  • 128G硬盘空间
  • 8G内存
  • Linux Mint 18.2

目标

Windows下编译Clang已经成功,为考虑代码兼容性,在Linux也需要编译Clang及libclang。

执行编译

按照官方Get Start所写分别 checkout 了 llvm和clang两个项目,具体参考Getting Started: Building and Running Clang.

a、用cmake创建项目

一切顺利

b、执行make

遭遇错误:
ERROR: make collect2: ld terminated with signal 9

根据上面的错误信息,得知是Linux swap空间不足导致编译失败。在编译时调用如下命令也可以观察到8G内存被爆:

$free -m
//显示memory和swap的使用情况

由于所有硬盘空间已经被分区并使用,所以使用物理分区做swap区会比较麻烦,因此使用Linux提供swap相关命令

//进入用户目录
cd ~

//在用户目录下创建swapfile文件
dd if=/dev/zero  of=swapfile  count=4096  bs=1024k
dd if=/dev/zero of=/tmp/mem.swap bs=1M count=4096
//if 表示输入文件 /dev/zero表示一个空文件,即以null字符写入文件中。
//of 表示输出文件
//bs 每个块多少个字节,可以带单位
//count 表示多少个块
//这样就创建4G的一个空文件

//当然根据bs指定的大小不同,我们也可以通过下面的文件增加:
dd if=/dev/zero of=/tmp/mem.swap bs=1M count=4096 (增加4G)
//或
dd if=/dev/zero of=swapfile bs=1024 count=1048576  (增加1G) 

//挂载swap分区文件
sudo swapon swapfile

//关闭swap设备或文件
swapoff  swapfile

c、make install

只要硬盘空间够,这里不会出现问题。

总结

以前总觉得Linux下 8G内存不需要再开swap分区,但遇到Clang之后发现,时代在进步,8G已经快成为历史。

另外,编译Clang对于硬盘空间的占用真是疯狂,其build目录占用了近47G,由此推断,128G的工作空间也够呛了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值