为android编译Unix工具

时间:2011-04-27 17:07:46

标签: android gcc arm cross-compiling

我想在我的root arm arm6手机上使用一些unix工具。我将使用交叉编译工具provided here。如果我想编译gnu netcat,如何将交叉编译器前缀设置为arm-none-linux-gnueabi-以及如何启用静态链接(无共享库)。

2 个答案:

答案 0 :(得分:2)

我设法使用Ubuntu的arm-linux-gnueabi工具链交叉编译Android的rsync。请参阅此related question

答案 1 :(得分:1)

除非你特别需要构建一个比bionic更标准的libc,你可以使用ndk的工具链,通过复制hello-jni示例并在jni / Android.mk中将BUILD_SHARED_LIBRARY更改为BUILD_EXECUTABLE或使用脚本来生成一个独立的工具链。您可能希望对ndk-build脚本使用V = 1选项来查看它向gcc发出的命令。

否则,您可能需要将前缀传递给configure脚本或手动将其编辑到项目的Makefile中。由于很多项目都没有真正设置交叉编译系统,所以通常情况并不顺利。我不得不求助于编辑配置脚本来设置前缀并跳过测试尝试执行测试程序的地方。

当构建系统比项目要求更复杂时,有时可以使用的选项是为主机配置(让我们希望是linux)。然后手动编辑生成的Makefile,以改变为android构建所需的任何内容。以防万一(特别是如果你做了一个测试主机版本),做一个干净可能不是一个坏主意。然后执行构建,它将从Makefile修改中获取arm编译器。

最后,如果您可以通过Hobbit而不是gnu版本满足原始的netcat,那么您几乎不需要将它自己移植到Android上,因为已经完成了。在https://android.googlesource.com/platform/external/netcat的谷歌树上已经有了一个Android版本  它可能已经在你的设备上(作为'nc'),并且肯定包含在替代ROM中,例如Cyanogenmod。