我已经编写了一个大型应用程序。我可以在以下情况下成功编译该应用程序:
- 在运行Ubuntu 12.04的i386主机的本机编译中
- 本机在运行Ubuntu 12.04的PandaBoard上(这需要很长时间)
- 在主机PC上将Qemu和chroot用于armhf PandaBoard目标(这需要很长时间)
我想交叉编译i386主机上的应用程序,使其在诸如PandaBoard之类的目标上运行,以便及时完成构建。到目前为止,使用存储库中的arm-linux-gnueabihf工具链进行的尝试均导致二进制文件无法正常运行。在这个阶段,我还没有打包软件的计划。
推荐的成功交叉编译的方法是什么?
使用交叉编译器工具链进行交叉编译应该可以,这就是它的目的。二进制文件不能以哪种方式正确运行?
—
吉尔(Gillles)'所以
我的二进制文件几乎立即终止。strace似乎表明libc.so.6不在预期的位置。
—
乔纳森·凯夫
那应该可以通过链接选项解决(我不知道哪个是副手)。目标系统是否正在运行Ubuntu?
—
吉尔(Gilles)'所以
是的,目标也正在运行Ubuntu 12.04。我以为也许我需要在编译器和链接器中使用--sysroot选项,但是在Ubuntu工具链中禁用了该选项。
—
乔纳森·凯夫
工具链适用于我,适用于12.04。我刚刚在amd64上对其进行了测试,并成功运行了在armhf服务器上生成的二进制文件。但是我没有便携式的i386构建机器。如果仍然有问题,则需要详细说明。ldd说什么?您从strace中看到了什么,使您得出了结论?查看您是否可以将问题简化为一个简单的测试案例,该案例应该可以正常工作,并详细介绍您要采取的步骤。
—
罗比·巴萨克