首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

请问交叉编译不通过的有关问题

2013-06-26 
请教交叉编译不通过的问题代码在PC机上已经编译通过,通过ldd查看依赖库linux-vdso.so.1 (0x00007fff3dff

请教交叉编译不通过的问题
代码在PC机上已经编译通过,通过ldd查看依赖库
        linux-vdso.so.1 =>  (0x00007fff3dffd000)
        libswscale.so.2 => /usr/local/lib/libswscale.so.2 (0x00002ad7df522000)
        libavformat.so.54 => /usr/local/lib/libavformat.so.54 (0x00002ad7df764000)
        libavutil.so.51 => /usr/local/lib/libavutil.so.51 (0x00002ad7dfa98000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003685c00000)
        libavcodec.so.54 => /usr/local/lib/libavcodec.so.54 (0x00002ad7dfcc3000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003686000000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003686c00000)
        libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x000000369a600000)
        libz.so.1 => /lib64/libz.so.1 (0x0000003686400000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003685800000)
然后嵌入式平台众核板上的这些需要的库也是存在的,makefile文件路径我也没写错,但是交叉编译时候就是不通过,以下是一些错误提示,


tile-cc ffmpeg.c -o ffmpeg_tile -I/usr/local/include -I/usr/local/include  -L/root/TileraMDE-3.0.1.125620/tilepro/lib -L/root/TileraMDE-3.0.1.125620/tilepro/tile/usr/lib -L/home/wst/sx/ffmpeg -L/home/wst/sx/ffmpeg/libavutil -L/home/wst/sx/ffmpeg/libavcodec    -L/home/wst/sx/ffmpeg/libswscale   -L/home/wst/sx/ffmpeg/libavformat  -L/home/wst/lyn/workspace/libffmpeg/lib     -lavformat -lavcodec    -lswscale   -lavutil  

     
/home/wst/sx/ffmpeg/libavcodec/libavcodec.so: undefined reference to `expf@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavcodec/libavcodec.so: undefined reference to `ldexpf@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavcodec/libavcodec.so: undefined reference to `log@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavutil/libavutil.so: undefined reference to `realloc@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavutil/libavutil.so: undefined reference to `fabs@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavcodec/libavcodec.so: undefined reference to `exp2@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavformat/libavformat.so: undefined reference to `strncmp@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavutil/libavutil.so: undefined reference to `mmap64@GLIBC_2.12'
/home/wst/sx/ffmpeg/libavformat/libavformat.so: undefined reference to `mkdir@GLIBC_2.12'

我就不明白在PC机上编译通过了就说明所有依赖关系都是满足的了,可是为什么交叉编译就不能通过呢,所有需要的库也是存在的,  
还有哪些地方没考虑到,,求指教
交叉编译
[解决办法]
估计是交叉编译环境中gcc版本或glibc库版本的问题,薄见。。
[解决办法]
file /home/wst/sx/ffmpeg/libavcodec/libavcodec.so



类似如下信息:

target版本: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

host版本: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x89cbc2ca456010dd7f0684b02fd0120ea610711e, stripped

请确定版本正确.其他真不知道什么问题.ld错误的话一般就是库没有/库错误/库没找对等等



[解决办法]
`exp2@GLIBC_2.12',应该是这个。
可以先把glibc_2.12修改成指向glibc_2.11.2的链接试试。
[解决办法]
ln -s glibc_2.11.2 glibc_2.12

热点排行