当前位置: 技术问答>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机上编译通过了就说明所有依赖关系都是满足的了,可是为什么交叉编译就不能通过呢,所有需要的库也是存在的,
还有哪些地方没考虑到,,求指教
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错误的话一般就是库没有/库错误/库没找对等等
类似如下信息:
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的链接试试。
可以先把glibc_2.12修改成指向glibc_2.11.2的链接试试。
|
ln -s glibc_2.11.2 glibc_2.12
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。