在编译c++环境中碰到许多问题,具体如下:
1、warning: Clock skew detected. Your build may be incomplete
问题原因:程序执行的时间比机器时间更晚,不匹配。
解决方法:尝试使用 find . -type f | xargs -n 5 touch,失败。
使用date检查机器时间并未错误,于是暴力date -s机器时间,后延10分钟,问题解决。
2、opencv undefined reference to jpeg_finish_decompress@LIBJPEG_9.0
问题原因:未安装LIBJPEG_9.0库
解决方法:下载LIBJPEG_9.0库,tar之后安装即可。
3、ndefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits, std::allocator >::basic_stringstream()@GLIBCXX_3.4.26’
问题原因:源代码的opencv在g++9.3条件下编译,而本机器的g++版本为7.5.0,所以报错
解决方法:将opencv重新再g++7.5.0条件下编译,替换掉原来的opencv,注意路径与源代码保持相同
4、error while loading shared libraries: libopencv_core.so.4.5: cannot open shared object file: No such file or directory
问题原因:源代码的 libopencv_core.so.4.5是软连接到后缀为4.5.2文件的,而重新编译的没有软连接,于是copy4.5.2文件,将其后缀名改为4.5,成功解决。
5、服务器重启后重新出现问题4
问题原因:路径丢失了
解决方法:先用ldd DepthBasedMatch(二进制执行文件),查看哪些so文件是not found。使用export LD_LIBRARY_PATH=路径:$LD_LIBRARY_PATH,将not found的so文件路径加入进去即可。
c++代码编写问题:
1、首先写.cpp文件,若需要提供接口,则需要编写.h头文件;其次写CMakeLists.txt,然后进行cmke生成makefiles,再进行make,生成可执行的文件。最终运行可执行文件即可。