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

sx666777888 2013-04-11 02:54:18
代码在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机上编译通过了就说明所有依赖关系都是满足的了,可是为什么交叉编译就不能通过呢,所有需要的库也是存在的,
还有哪些地方没考虑到,,求指教
...全文
324 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sx666777888 2013-04-14
  • 打赏
  • 举报
回复
引用 9 楼 fly_qj 的回复:
`exp2@GLIBC_2.12',应该是这个。 可以先把glibc_2.12修改成指向glibc_2.11.2的链接试试。
这个怎么修改啊???一台pc上不是只有一个glibc版本吗??
RedWolf1999 2013-04-14
  • 打赏
  • 举报
回复
ln -s glibc_2.11.2 glibc_2.12
sx666777888 2013-04-14
  • 打赏
  • 举报
回复
我说的glibc版本错误的说法是错误的,仔细查找了一下两者都是2.11.2版本的, 但是有一点不知道是不是错误的来源,我把交叉编译好的库用 objdump -T 查看一下其中一个错误提到的“fputs@GLIBC_2.12” objdump -T /home/wst/sx/ffmpeg/libavutil/libavutil.so.51 | grep 'fputs' 00000000 DF *UND* 00000000 GLIBC_2.12 fputs 然后我又查了嵌入式平台上的libc objdump -T /root/TileraMDE-3.0.1.125620/tilepro/tile/lib/libc.so.6 | grep 'fputs' 0008b9a8 w DF .text 000003e0 GLIBC_2.0 fputs 发现显示的GLIBC版本不一样,, 可是我看不懂objdump -T 这个命令的输出代表什么意思,网上也没这些说明, 求指导啊!!!!!!
RedWolf1999 2013-04-13
  • 打赏
  • 举报
回复
`exp2@GLIBC_2.12',应该是这个。 可以先把glibc_2.12修改成指向glibc_2.11.2的链接试试。
zodiac1111 2013-04-12
  • 打赏
  • 举报
回复
引用 6 楼 sx666777888 的回复:
引用 5 楼 zodiac1111 的回复:file /home/wst/sx/ffmpeg/libavcodec/libavcodec.so 类似如下信息: target版本: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped ho……
实话说我不太清楚,但是 exp2@GLIBC_2.12 貌似可能也许跟库的版本有关,建议两者统一在试试.
mayer 2013-04-12
  • 打赏
  • 举报
回复
引用 6 楼 sx666777888 的回复:
引用 5 楼 zodiac1111 的回复:file /home/wst/sx/ffmpeg/libavcodec/libavcodec.so 类似如下信息: target版本: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped ho……
lz说得有道理
sx666777888 2013-04-12
  • 打赏
  • 举报
回复
引用 5 楼 zodiac1111 的回复:
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 s……
现在有一个问题,就是我的嵌入式平台上的glibc是2.12版的,而我编译那些交叉库的系统是2.11.2版的 会不会是这个问题啊???????
zodiac1111 2013-04-11
  • 打赏
  • 举报
回复
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错误的话一般就是库没有/库错误/库没找对等等
sx666777888 2013-04-11
  • 打赏
  • 举报
回复
引用 1 楼 JoeBlackzqq 的回复:
交叉编译下需要链接的是交叉编译环境下的库,不是pc上的库文件。具体的不知道怎样才能跟你说清楚,只有具体情况具体调过才知道。
这个我知道啊,可能我文中没说明白吧,交叉编译环境下的库是有的
fdl19881 2013-04-11
  • 打赏
  • 举报
回复
库不一样,需要交叉编译工具链. 搜索个交叉编译的例子看.
prohibit 2013-04-11
  • 打赏
  • 举报
回复
估计是交叉编译环境中gcc版本或glibc库版本的问题,薄见。。
JoeBlackzqq 2013-04-11
  • 打赏
  • 举报
回复
交叉编译下需要链接的是交叉编译环境下的库,不是pc上的库文件。具体的不知道怎样才能跟你说清楚,只有具体情况具体调过才知道。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧