交叉编译opencv FFmpeg时遇到的坑

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


/opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libopencv_imgproc.so.2.4, needed by /usr/local/opencv/install_opencv/lib//libopencv_highgui.so, not found (try using -rpath or -rpath-link)


编译问题,把编译时-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



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值