为 Android 编译本机 C 二进制文件 - 例如:dosfsck
我正在尝试使用 Linux 和 Android NDK 和 SDK 编译适用于 Android 的二进制 dosfsck 和 mkdosfs。我已经正确设置了 NDK 和 SDK,NDK gcc 的路径在我的路径中。我还为我的设备 (HTC Desire) 下载了正确的 SDK。
我首先尝试使用简单的 make 来编译该文件:
制作 CROSS_COMPILE=/home/droidzone/android/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
我需要能够运行我的设备中的二进制文件。事实上,该应用程序可以在 Ubuntu 上编译并运行,但不能在我的设备上运行。我从 sh 收到错误消息:无法运行二进制文件
有人可以解释一下我如何链接库、我应该从哪里获取它们(在 SDK 内)以及对 Makefile 进行哪些更改(如果有)以及编译此库的最终语法适合Android
I am trying to compile the binary dosfsck and mkdosfs for Android, using Linux and Android NDK and SDK. I've setup NDK and SDK properly, the path to the NDK gcc is in my path. I've also downloaded the correct SDK for my device (HTC Desire).
I first tried compiling the file with a simple make:
make
CROSS_COMPILE=/home/droidzone/android/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
I need to be able to run the binary from my device. As it is, the app compiles and runs on Ubuntu, but not my device. I get the error message from sh: Cannot run binary
Could someone please explain how I can link libraries, where I should get them from (within the SDK) and what changes if any to make to the Makefile, and the final syntax to compile this properly for Android
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现使用 agcc script 脚本最容易做到这一点,您可以通过导出 CC=agcc 来使用该脚本。正如您所尝试的那样,许多项目无法正确支持 CROSS_COMPILE 。 agcc 脚本面向使用 Android 构建树文件,因此我修改了它以使用NDK 工具。有了这个,您应该能够使用
make CC=agcc
或CC=agcc ./configure
构建大多数东西I found this was easiest to do using the agcc script script which you can use by exporting CC=agcc. Lots of projects will not properly support CROSS_COMPILE as you have tried. The agcc script is oriented around using the Android build tree files so I modified it to use the NDK tools. With this you should be able to build most things using
make CC=agcc
orCC=agcc ./configure