问题描述
|
一堆补丁后,我能够运行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。将不胜感激任何输入。
解决方法
您不能在自己的系统上使用libelf库。毕竟,您正在尝试交叉编译。您的计算机可能是基于x86的,电话是机臂。即使您可以说服编译器链接最终的可执行文件,您的x86代码也不会立即运行。
您有两种选择:
1)用交叉编译器也编译libelf
2)尝试从Debian档案文件中获取libelf的arm版本,使用dpkg -x将其解压缩到一个私有目录中,并尝试链接到该目录。
您可以通过完整路径而不是-l使用库名称。
,尝试:
apt-get安装libelf-dev
并看到ld找不到现有的库
,考虑Scratchbox。我个人讨厌交叉编译,尤其是因为我是Python的忠实拥护者,并且很难交叉编译Python,因为它希望在构建过程中运行python可执行文件(刚刚构建的)。当您在x86桌面上编译ARM版本的Python时,这显然会引起问题。因为Scratchbox使用仿真,所以它(和您)可以在桌面系统上(在scratchbox环境中)运行ARM二进制文件,从而解决了许多交叉编译问题。
ScratchBox用于现在已经不复存在的Maemo操作系统(在ARM上运行),但是人们已经将其成功用于Android:
适用于Android的草稿箱交叉编译
http://www.macrobug.com/blog/2007/11/25/using-scratchbox-to-build-complex-arm-binaries-for-android/
如果您选择这条路线,请在评论部分让我知道。我以前为Maemo开发时,有一个暂存器虚拟机。我现在正在编写Android软件,因此我对使草稿盒适用于android有一些个人兴趣。