ffmpeg、jrtp、SDL的交叉编译
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ffmpeg、jrtp、SDL的交叉编译
/weili8607/blog/item/b8c30a3c1ad80308baa16777.html
2009-05-26 10:33
因为需要,重新使用最新的交叉编译器arm-linux-gcc 4.3.2编译了所需要的SDL、ffmpeg、rtp库。其他交叉编译器过程类似,可能遇到不同的问题,视情况解决。
一、SDL的编译
SDL-1.2.13。
./configure --prefix=/weili/SDL --disable-video-qtopia
--disable-video-dummy --disable-video-fbcon --disable-video-dga
--disable-arts --disable-esd --disable-alsa --disable-cdrom
--disable-video-x11 --disable-nasm --target=arm-linux --host=arm-linux --enable-video-fbcon
make
make install
看情况改变prefix目录和各种选项。make install之后便在prefix目录下生成所需的动态库和include头文件等等。
二、jrtp的编译
编译rtp库要先编译jthread库,然后在编译jrtp库。我使用的是jthread-1.2.1.tar.gz jrtplib-3.7.1.tar.gz。
1. 进入jthread-1.
2.1
./configure -host=arm-linux -prefix=/weili/jthread/
make
make install
这样jthread库就安装在了/weili/jthread/lib下面了
libjthread.so
2.进入jrtplib-
3.7.1
./configure --host=arm-linux -prefix=/weili/jrtp/
-with-jthread-includes=/weili/jthread/include/jthread/
CPPFLAGS=-I/weili/jthread/include/jthread
LDFLAGS=-L/weili/jthread/lib/
make
make install
我编译的时候出现mecpy在rtppacket.cpp和rtcpcompoundpacketbuilder.cpp 未定义的错误,然后在这两个.cpp头中加入#include
最后在/weili/jrtp/lib中就生成了需要的libjrtp库。
三、ffmpeg的编译
一开始我使用了ffmpeg-0.4.9-p2*******,结果出现错误In file included from mathematics.c:24:
common.h:619: error: static declaration of 'lrintf' follows non-static declaration
make[1]: *** [mathematics.o] Error 1
make[1]: Leaving directory `/weili/ffmpeg-0.4.9-p2*******/libavutil'
make: *** [lib] Error 2,不知道为什么,然后就换用ffmpeg_src_20071007.rar了。
首先下载解压后configure,
./configure --prefix=/weili/ffmpeg/ --enable-shared --cross-compile
--cc=arm-linux-gcc --arch=arm --enable-gpl --disable-strip --disable-network
--disable-ipv6 --disable-vhook --disable-mpegaudio-hp --enable-pthreads
--enable-small --disable-parsers --disable-debug --disable-armv5te --disable-armv6
执行时可能出现bash: ./configure: /bin/sh: bad interpreter: No such file or directory
原因是那个configure是在windows下写的,所以脚本就不能运行了。解决办法:把windows 下的configure转换成Linux下的,执行命令dos2unix configure 如果没有dos2unix命令就安装个,很简单,下一个dos2unix-3.1.tar装上就行了。
因为我没用到x264就没enable,注意如果需要x264要首先安装x264库。
然后make。我中间出现一些错误。
armv4l/dsputil_arm_s.S:79: Error: selected processor does not support `pld[r1]'
解决:PLD这个指令,只有ARM5以上才支持,而此处,我的配置是arm922T,属于arm4,
不支持这个指令,可以直接忽略它。所以,用下面这个方法,手动添加通过宏定义判断,就可以避开此问题了:也就是,修改dsputil_arm_s.S,在前面添加上:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
记得第一次编译的时候还出现其它错误,经过修改才好使,不过后来再编译就没什么错误了。直接make就通过了,最后make install,之后再
/weili/ffmpeg/下就生成了需要的ffmpeg库。
但最后应用,发现mpeg4的解码器不能用,其它的都能用,不知道什么原因。所以改用了其它解码器来应用,可以。//后又经测试,可以用mpeg4。
/******************************若要转载,请注明出处
***********************************/