今天编译移植全志A40i平台,不想用SDK中的文件系统,于是自己编译一个busybox。
但是在上板运行后发现,SDK编译出来的tcpdump竟然在板子上运行不起来???

啥玩意??
我一度怀疑编译工具链是不是不对。于是我检查了一下SDK编译出来的tcmdump程序。
file tcpdump
tcpdump: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=12dcee4e15d4d5800641fa602f696ff19ca6b7d6, stripped
没错啊。
我又试了一下/buildroot/output/target/usr/sbin中编译出来的其他程序,是可以运行的,唯独就是这个tcpdump不能运行,这就引起我的好奇了。
按理说编译出来的都是同一个工具链的产物,凭啥有些可以运行,有些不行?认真对比一下。
sdk/A40i/buildroot/output/target/usr/sbin$
sdk/A40i/buildroot/output/target/usr/sbin$ file tcpdump
tcpdump: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=12

在移植busybox到全志A40i平台后,遇到SDK编译的tcpdump无法运行的问题。经过检查,发现tcpdump需要的链接库/lib/ld-linux-armhf.so.3在板子上缺失。通过对比,了解到此问题由工具链差异引起,解决方法是在板子上创建软链接,使tcpdump能找到所需的链接库。后续发现新的错误,推测可能与工具链差异有关,计划对比并更换工具链。

167

被折叠的 条评论
为什么被折叠?



