当前位置:  技术问答>linux和unix

请教交叉编译不通过的问题

    来源: 互联网  发布时间:2017-04-07

    本文导语:  代码在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...

代码在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

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,