问题1. C++: internal compiler error: killed (program cc1plus)
原因是:系统没有交换分区,编译过程中内存memory不足,编译失败. (我的memory是2GB)
解决办法:
- 创建分区文件
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
、
count=bs*1024, bs是分区文件的大小,单位是M。 (count means the file size in kilobytes. you have to multiply the MBs by 1024. Example: 64MB -> 65536/ 128MB -> 131072) - 生成swap文件系统
$ sudo mkswap /swapfile
- 激活swap文件:
$ sudo swapon /swapfile
- 重新编译:
$ cd pcl
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
- 编译成功后删除swapfile:
$ sudo swapoff /swapfile
$ sudo rm /swapfile
问题2. virtual memory exhausted: cannot allocate memory
原因:没有设置swap大小或设置内存太小, 此处我的原因是没有设置swap大小
可以输入 $ free -m 查看memory 和swap
swap大小不够的话,可以通过$ sudo dd if=/dev/zero of=swapfile bs=1M count=4084
扩大
这里出现text file busy 是因为swapfile 已经存在且激活,如需扩大swapfile大小,可关闭并删除此前swapfile后新建swapfile.
$ sudo swapoff /swapfile
$ sudo rm /swapfile
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4084
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
如果是因为memory太小,先把ubuntu 关掉,在VMware里面更改ubuntu的设置,如下:
memory设为4G或更高
另外注意下面,计划分配多少MB给graphics memory,可设置可不设置,一般用推荐
问题三
在创建分区的时候出现:
原因是:可能已经有/swapfile打开了,不能重复打开
先看下是否swapfile已经打开了:
sudo swapon --show
如果已经打开,要先把swapfile 关掉并删除:
sudo swapoff -a
sudo rm /swapfile
之后重复问题一的解决步骤
问题四
在编译到43%的时候,一直出现错误“virtual memory exhausted: cannot allocate memory”,
为什么至今还不知道,
之前设置的memory=2G, 768M for graphics memory,
现在改成了momory=4G, 1G for graphic memory, swapfile: bs=1M, count=4084, 会出现没有空间可用,选择了ignore,没有理它。
43%的坎过去了,看后续还有没有其他错误,应该就是memory设置的太小。
到87%出现的问题:
猜测应该是内存不够
把swapfile关掉,再重新make一个,因为原来已经编译好的包再次编译的时候不会重复编译,就不会占用空间了,再重新make swapfile的话,就是for 剩下的15%内容的编译
难道还要把memory扩大到8G??
现在的配置
还是会出现同样的问题
那么将memory扩大到8G
扩大到8G还是有问题
可能是swapfile 没开,把swapfile打开后,
还是一样的问题
有人说是tmp的问题:
https://www.cnblogs.com/youxin/p/5116219.html
https://www.cnblogs.com/hahawgp/p/3601942.html
但是更改了后还是不行,
还是不行
最后把memory=16G, store=60G, 然后…就编译成功了,之前memory=8G, store=40G的时候都编译不成功。
编译完后63.1G还剩49.9G
问题五
‘fabs’ was not declared in this scope
这个问题不知道怎么解决,应该是版本不对