编译出错现象:
/home/service/rpc/goya-rpc/src/rpc_server_impl.cc: In member function ‘void goya::rpc::RpcServerImpl::OnCallbackDone(google::protobuf::Message*, boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >)’:
/home/service/rpc/goya-rpc/src/rpc_server_impl.cc:101:44: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated (declared at /home/service/rpc/goya-rpc/thirdparty/install/include/google/protobuf/message_lite.h:430): Please use ByteSizeLong() instead [-Wdeprecated-declarations]
int serialized_size = resp_msg->ByteSize();
^
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [src/CMakeFiles/goya-rpc.dir/rpc_server_impl.cc.o] Error 4
make[1]: *** [src/CMakeFiles/goya-rpc.dir/all] Error 2
make: *** [all] Error 2
出错原因是:编译机器运行内存不足,而大量template的扩展需要足够的内存。
#查看linux内存占用方式:
1、ps aux --sort -rss
2、free -m
3、top 按【shift + M键】倒序排列
4、cat /proc/meminfo
解决方法:
可以通过临时使用交换分区来解决:
=【第一步,按如下操作】=========================================
sudo dd if=/dev/zero of=/swapfile bs=64M count=16 ?? #count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=1024MB sudo mkswap /swapfile ? ? ? ?? ? ? ? ? ? ? ? ? ?#把刚才空间格式化成swap格式 sudo swapon /swapfile ? ? ? ? ? ? ? ? ? ? ? ? ? ?#使用刚才创建的swap空间
=【第二步,关闭释放】========================================== 在编译完成后,最好可以关闭(释放)交换空间
sudo swapoff /swapfile sudo rm /swapfile 之后继续执行你的相关操作就可以了。。。
注意:如果创建了临时空间之后仍提示“g++: internal compiler error: Killed (program cc1plus)”,可能是因为分配的空间不够大,可以继续分配更大的空间。
参考:?
1、https://blog.csdn.net/fenquegong2126/article/details/80988452
2、g++: internal compiler error: Killed (program cc1plus)Please submit a full bug report,内存不足问题解决 - 码上快乐?
|