1.make的过程中关于“pthread”的错误:
解决方案1:在cmake-gui中勾选Advance,然后修改CMAKE_EXE_LINKER_FLAGS值为-lpthread -lrt避免编译时出错;
解决方案2:修改编译路径中的CMakeCache.txt文件,找到CMAKE_EXE_LINKER_FLAGS,在其后面加上-lpthread -lrt -ldl链接属性(=-lpthread -lrt -ldl)
2.make的过程中关于 "error: dc1394/dc1394.h: No such file or directory "的错误:
解决方案:cmake-gui中去掉opencl和ocl相关配置(去掉WITH_OPENCL,WITH_OPENCAMDBLASL,WITH_OPENCLAMDFFT,BUILD_opencv_ocl)
3.make的过程中关于 long和int的错误:
4.编译好的程序在开发板(ITOP4412)上运行,报错:./opencvtest: error while loading shared libraries: ../../lib/libopencv_objdetect.so: cannot open shared object file: No such file or directory ;但我已经将共享库复制到了开发板的/lib目录下,同时编译时也指定了运行时的动态库路径(rpath:/lib),同时在开发板的/etc/profile环境变量中也指定了运行时共享库路径(LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib),仍然报相同错误,非常无语!!然后在PC端通过“arm-none-linux-gnueabi-readelf -a ./opencvtest | grep "Shared"命令查看可执行程序依赖库,结果存在: 0x00000001 (NEEDED) Shared library: [libopencv_objdetect.so]这一项,说明可执行程序没问题,问题还是在于开发板找不到库:libopencv_objdetect.so;现在甚至怀疑开发板的链接器有问题。突然发现实是在NFS虚拟文件系统中运行的程序,于是将程序cp到/home/opencv目录下,运行提示:./opencvtest: /lib/libc.so.6: version `GLIBC_2.17' not found (required by /lib/libopencv_core.so) ,错误信息不同了,看来不能在NFS中运行需要共享库的程序(还没搞清楚原因),查看开发板的libc版本,时2.10的,需要移植2.17版本。
5.交叉编译clib-2.17,解压源码,没有CMAKEFILE.txt,不能用cmake-gui,在源码目录下建立install和build目录,然后在buile目录下运行../configure --build=x86 --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --prefix=/home/top/my_project/ARM_app/libc-2.17/glibc-2.17/install ,报错:These critical programs are missing or too old: make gawk,于是安装了gawk(apt-get install gawk),但是我已经安装了make-4.1(高版本),为什么会报错,查看clib-2.17是2012年更新的,而make-4.1是2018年更新的,推断是make版本太高,果断安装了make-3.81(安装了make-3.81后 ,用make -v可能人然显示make-4.1,其实已经安装好了),编译通过。