在编译过程中若是遇到段错误,可参考一下链接:
Linux下调试段错误的方法[Segmentation Fault]–GDB
Segmentation Fault错误原因总结
- 如果定位不到问题所在,最简单粗暴的方法就是:
- 把cmakelists.txt所有依赖库都注释掉,重新编译,报缺少什么依赖库再加入什么,排除掉多余或有问题的依赖库;
- 在代码中各处关键位置加入print语句,编译运行,看是停在那边,逐步缩小问题代码范围;
- 第二步这样也可以:把主调函数main函数全部注释,从头一点点取消注释逐步编译,定位问题代码所在;
- 当在linux下运行编译出的可执行文件时,可以写个脚本 run.sh,格式如下:
LD_LIBRARY_PATH=./ ./test_faceheaddes_x86_64_linux64
其中
- LD_LIBRARY_PATH=./ 是运行的依赖库所在路径,可以看出放在了可执行文件一起
- ./test_faceheaddes_x86_64_linux64 为当前路径下的可执行文件