为 android 编译 Unix 工具

发布于 2024-11-03 09:30:13 字数 230 浏览 1 评论 0原文

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

I want to use some unix tools on my rooted android arm6 based phone. I will be using cross compiler tools provided here. If I want to compile gnu netcat, how can I set the cross compiler prefix to arm-none-linux-gnueabi- and how to enable static linking (no shared library).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮萍、无处依 2024-11-10 09:30:13

我设法使用 Ubuntu 的 arm-linux-gnueabi 工具链为 Android 交叉编译 rsync。请参阅此相关问题

I managed to cross-compile rsync for Android using Ubuntu's arm-linux-gnueabi toolchain. See this related question.

一桥轻雨一伞开 2024-11-10 09:30:13

除非您特别需要针对比 bionic 更标准的 libc 进行构建,否则您只需使用 ndk 的工具链即可,方法是复制 hello-jni 示例并将 jni/Android.mk 中的 BUILD_SHARED_LIBRARY 更改为 BUILD_EXECUTABLE 或使用脚本生成标准库单独的工具链。您可能需要使用 ndk-build 脚本的 V=1 选项来查看它向 gcc 发出的命令。

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

当构建系统比项目需要的更复杂时,有时可以选择为您的主机进行配置(希望是 Linux)。然后手动编辑生成的 Makefile 以更改为 android 构建所需的任何内容。以防万一,进行清理可能不是一个坏主意(特别是如果您进行了测试主机构建)。然后进行构建,该构建将从您的 Makefile 修改中获取 Arm 编译器。

最后,如果您对 Hobbit 的原始 netcat 而不是 GNU 版本感到满意,那么您几乎不需要自己将其移植到 Android,因为这已经完成了。谷歌树中已经有一个 Android 版本 https://android.googlesource.com/platform/外部/netcat
它可能已经在您的设备上(如“nc”),并且肯定包含在替代 ROM 中,例如 Cyanogenmod。

Unless you particularly need to build against a more standard libc than bionic, you can just use the ndk's toolchain, either by copying the hello-jni example and changing BUILD_SHARED_LIBRARY to BUILD_EXECUTABLE in the jni/Android.mk or using the script to generate a stand alone toolchain. You may want to use the V=1 option to the ndk-build script to see the commands it's issuing to its gcc.

Otherwise you may need to pass the prefix to the configure script or manually edit it into the Makefile for the project. This often has not gone well as many projects have make systems not really set up for cross compiling, I've had to resort to editing the configure script to set prefixes and skip tests where it tries to execute a test program.

An option that sometimes works when the build system is more complicated than the project requires is to do a configure for your host (let's hope that's linux). Then manually edit the generated Makefile to change anything needed to build for android instead. Might not be a bad idea to do a clean just in case (especially if you did a test host build). And then do the build which will pick up the arm compiler from your Makefile modifications.

Lastly, if you can be content with the original netcat by Hobbit rather than the gnu version, you hardly need to port it to android yourself as that's already been done. There's already an android version in the google tree at https://android.googlesource.com/platform/external/netcat
which may be on your device already (as 'nc'), and is definitely included in alternate ROMs such as Cyanogenmod.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文