1 c compiler test failed
查看日志,发现是 arm-linux-gcc not found
解决办法:
1)进入root(sudo -s命令)尝试在 /usr/local/arm/4.3.2/bin目录下运行;./arm-linux-gcc -v 如果成功,那就去修改环境变量,ubuntu系统下,修改/etc/environment文件,最后添加“:/usr/local/arm/4.3.2/bin”,保存退出,并在/etc/目录下执行命令:source environment 最后执行arm-linux-gcc -v检测是否安装成功
2)将--cc后面的路径改成绝对路径
2 libxvid not found
查看日志,
/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/libxvidcore.so: file not recognized: File format not recognized
collect2: ld returned 1 exit status
ERROR: libxvid not found
1)编译时添加 --extra-cflags=-I/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include --extra-libs=-L/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib 没有解决
2)
configure 中找到 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
修改成
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore -lpthread
没有解决
3)复制可执行文件到/sbin下,发现不知道该复制到哪里,可悲
其实网上的opencv编译都是千篇一律,根本没有啥实质性的内容。后来想想是不是之前有啥问题没有解决好的原因,于是查看了下第一个问题,偶然发现一个可执行文件位数问题,因为交叉编译链都是32位的,64位的可执行文件不识别,所以
arm-linux-readelf -h libxvidcore.so
magic行的第五个数据为01,代表是32位,02代表是64位,我的是02,代表64位
因此重新编译,还是64位。切换到root下重新编译,可执行文件成了32位(此时在make的之前,本想修改Makefile引用的platform.inc文件,将CC=gcc改为CC=arm-linux-gcc,因为切换到root前CC=gcc,但是切换到root后竟然不需要修改就成了CC=arm-linux-gcc了,如果大家编译后还是64位,那么修改下CC后在编译下)
3
-- The CXX compiler identification is unknown
-- The C compiler identification is unknown
按照第一步,查看路径,因为我修改过了,所以只需
/etc/目录下执行一次source environment
4 cmake 编译的时候offmpeg显示yes,但cmake-gui编译却显示为NO
解决办法: cmake-gui编译选择的时候 Operating System ,填Linux,注意,第一个字母大写
5 arm-linux-g++ -Wno-psabi -I/usr/local/opencv/install_opencv/include/ -L/usr/local/opencv/install_opencv/lib/ -lopencv_highgui -lopencv_core -lpthread -lrt -ldl -o main main.cpp
编译问题,把编译时-L 路径中的lib去掉就行,arm-linux-g++ -Wno-psabi -I/usr/local/opencv/install_opencv/include/ -L/usr/local/opencv/install_opencv -lopencv_highgui -lopencv_core -lpthread -lrt -ldl -o main main.cpp