在一堆补丁之后,我能够运行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。将欣赏任何意见。
答案 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上工作感兴趣。