如何为 Android 编译 GCC?

27

有没有办法为安卓编译GCC?基本上可以在安卓终端模拟器中访问GCC编译器,并能从C或C++源代码文件编译出可在安卓上运行的二进制文件。

我的意图是使用这个,并最终安装make。


通常情况下,您会在工作站上运行GCC 交叉编译器,然后将其下载到目标设备(例如Android手机)。但是,如果您想要在Android设备上进行编译和运行,则首先需要一个shell :) 这个链接可能会有所帮助:Building for Android。此外,还有这个命令:adb shell - paulsm4
基本上是同样的问题:https://dev59.com/aWw15IYBdhLWcg3w0fAV(回答不是很完整)。 - FooF
@paulsm4,你是正确的,我在我的设备上安装了Kbox shell - glen3b
请问如何在已经root的手机上编译本地应用程序? - Ciro Santilli OurBigBook.com
1个回答

9
Android NDK已经包含了完整的GNU工具链,可以在你的电脑上运行。你可以使用它来编译任何想要的程序的本地版本。

在NDK中,请查看docs/STANDALONE-TOOLCHAIN.html以设置交叉编译器。您可能需要按照“调用编译器(简单方法)”的步骤设置一份工具链副本,这样您应该能够使用配置脚本(如gcc等GNU应用程序通常包含的configure)。

这真的是一项非常重要的任务,我建议您仔细阅读文档。文档还包含各种CFLAGS,LDFLAGS等值,您需要在配置和编译程序时进行自定义和使用。

至于编译gcc,make等本身,可能不必要或不可取。例如,gcc将会很大,你的手机可能没有足够的存储空间来安装它。如果您的最终目的是编译某个程序以在Android设备上本地运行,则建议您只使用NDK并将应用程序的configure脚本指向它。


谢谢,我现在有一个工作的交叉编译器,但无论如何尝试,我都无法在设备上执行二进制文件。除了 shell 之外的所有内容都显示文件存在,但当我在同一目录中时,它会抱怨找不到文件!但是 ls 显示它。 - glen3b
你的路径中是否包含该目录?并且该文件是否标记为可执行文件? :) - Michael Hampton
我刚刚运行了chmod 777 {binary name},没有出现错误,然后使用./{binary name}。已经进行了双重检查。 - glen3b
这个怎么样:https://android-review.googlesource.com/#/c/247498/? - Olorin
@MichaelHampton,嗯,由于gcc 4.9是2013年的最新版本,因此它已经不再更新,而在较新版本上使用“-O3”会更少出现问题。这个答案应该更新一下。至少对于交叉编译来说是这样。 - user2284570
gcc很庞大,你不想把它装在你的手机上。... 你不会是认真的吧? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接