在打了一堆补丁后,我能够运行Makefile,现在它在最后一步崩溃了:(.下面是我得到的错误:
arm-none-linux-gnueabi-gcc main.o libltrace.a -lelf -o ltrace
arm-none-linux-gnueabi-gcc/bin/ld: cannot find -lelf
collect2: ld returned 1 exit status
make: *** [ltrace] Error 1我想在Android上运行ltrace。将感谢您的任何意见。
发布于 2011-05-02 06:41:39
您不能在自己的系统上使用libelf库。毕竟,您是在尝试交叉编译。你的电脑可能是基于x86的,手机是arm的。即使您可以说服编译器链接最终的可执行文件,您的x86代码也不会在arm上运行。
您有两个选择:
1)用交叉编译器编译libelf
2)尝试从Debian归档中获取libelf的arm版本,使用dpkg -x将其解压缩到一个私有目录,并尝试链接到该目录。
您可以通过完整路径而不是-l来使用指定库名称。
发布于 2011-04-30 10:22:08
尝试: apt-get install libelf-dev并查看ld cannot find an existing library
发布于 2011-05-02 08:07:06
以Scratchbox为例。我个人讨厌交叉编译,特别是因为我是Python的铁杆粉丝,而且很难交叉编译Python,因为它希望在构建过程中运行python可执行文件(刚构建的那个文件)。当您在x86桌面上编译Python的ARM版本时,这显然会带来问题。因为Scratchbox使用仿真,它(和你)可以在你的桌面系统上运行你的ARM二进制文件(在scratchbox环境中),这解决了大量的交叉编译问题。
ScratchBox被用于现在已经不存在的Maemo操作系统(在ARM上运行),但人们已经成功地将其用于安卓系统:
如果你走这条路,请在评论区告诉我。我有一个scratchbox虚拟机,当我用来为Maemo开发的时候。我现在正在编写android软件,所以我对让scratchbox在Android上工作有一些个人兴趣。
https://stackoverflow.com/questions/5641803
复制相似问题