GCC 10.2交叉编译C++遇汇编警告及cc1plus终止问题排查求助
GCC 10.2交叉编译ARM时C++构建失败的调试方案
排查内存不足问题:
Killed signal terminated program cc1plus通常是系统OOM(内存不足)杀手终止了编译前端进程。执行dmesg | grep -i kill确认是否由OOM导致;临时解决方案可增加swap分区,或降低并行编译任务数(如调整make -j的参数值)。定位出错源文件:用
make -n打印编译命令,随后单独编译可疑文件(如arm-linux-gnueabihf-g++ -c target_file.cpp -o target_file.o),逐步锁定引发错误的具体源文件。生成并检查中间汇编文件:编译时添加
-save-temps参数,会生成预处理后的.ii文件和汇编.s文件。查看.s文件第2186487行附近的内容,排查是否存在格式异常或未正确换行的代码。禁用优化选项测试:若编译时使用了
-O2/-O3等优化,改为-O0重新编译,排除优化逻辑生成异常汇编代码的可能。检查源文件编码与换行符:用
cat -A target_file.cpp查看文件换行符,确保每行末尾为LF格式;若为DOS格式(CRLF),可使用dos2unix转换后重试。升级或替换交叉工具链:GCC 10.2可能存在特定架构编译bug,尝试升级到GCC 11+版本的
arm-linux-gnueabihf工具链,或更换其他发行版的工具链包。检查预处理输出:添加
-E参数仅执行预处理,查看生成的.ii文件对应行内容,排查宏展开后是否产生异常代码片段。
内容的提问来源于stack exchange,提问作者Jean-Michaël Celerier
相关产品推荐
相关产品推荐

