为arm-linux交叉编译ltrace

时间:2011-04-12 21:23:26

标签: android cross-compiling

在一堆补丁之后,我能够运行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。将欣赏任何意见。

3 个答案:

答案 0 :(得分:2)

您无法在自己的系统上使用libelf库。毕竟你正在尝试交叉编译。你的电脑可能是基于x86的,电话是手臂。即使您可以说服编译器链接最终的可执行文件,您的x86代码也无法在arm上运行。

您有两种选择:

1)使用交叉编译器编译libelf

2)尝试从Debian存档中获取libelf的arm版本,使用dpkg -x将其解压缩到私有目录,并尝试链接到该版本。

您可以使用通过完整路径而不是-l。

指定库名

答案 1 :(得分:1)

尝试:    apt-get install libelf-dev 并查看ld cannot find an existing library

答案 2 :(得分:1)

考虑Scratchbox。我个人讨厌交叉编译,特别是因为我是一个巨大的Python粉丝,并且很难交叉编译Python,因为它想要运行python可执行文件(刚刚构建的那个)作为构建过程的一部分。当您在x86桌面上编译ARM版本的Python时,这显然会导致问题。由于Scratchbox使用仿真,因此它(和您)可以在桌面系统上(在scratchbox环境中)运行ARM二进制文件,从而解决了大量的交叉编译问题。

ScratchBox用于现已解散的Maemo操作系统(在ARM上运行),但人们已成功将其用于Android:

如果你走这条路,请在评论部分告诉我。我有一个临时工具虚拟机,当我以前为Maemo开发时。我现在正在编写Android软件,所以我对让scratchbox在Android上工作感兴趣。