如何使用 Gnu makefile 为库编写 Android.mk

发布于 2024-08-31 14:15:27 字数 153 浏览 6 评论 0原文

我想使用庞大的第三方本机库制作一个 Android 应用程序,这些库使用 Gnu 构建工具(gnu makefile)。

我的问题是如何为这些库编写“Android.mk”文件,以便使用 Android 构建系统或 Android NDK 构建它们。

提前致谢

I want to make an Android application using huge third party native libraries which use the Gnu build tools (gnu makefile).

My question is how to write the "Android.mk" files for these libraries in order to build them using the Android build system or the Android NDK.

Thanks in advance

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

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

发布评论

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

评论(4

溺ぐ爱和你が 2024-09-07 14:15:27

据我了解,您需要将 makefile 转换为 android 格式:(
并使用 ndk_buidl 来构建它们

As far as i understand, you need to convert the makefiles to android format :(
and use ndk_buidl to build them

稚气少女 2024-09-07 14:15:27

唯一可行的方法是编写 NDK makefile。许多大型库都是以这种方式移植的。通常您应该运行 configure 脚本来生成 config.h 和 config.mak 文件。您将使用 config.mak 列出您的源。网上有一些教程可用于移植一些使用 Android NDK 构建的流行库。我在 freetype、ffmpeg、SDL、DevIL 等方面取得了成功。

The only feasible way will be to write the NDK makefiles. Many big libraries has been ported that way. Normally you should run the configure script to generate the config.h and config.mak files. You'll use the config.mak to list your sources. There are tutorials over the net for porting some popular libraries to be built with Android's NDK. I had success with freetype, ffmpeg, SDL, DevIL and more.

小情绪 2024-09-07 14:15:27

您可以使用以下技巧:下载 agcc,然后使用以下命令编译您的库
./configure CC=agcc CXX=agcc --host=arm-linux-androideabi &&制作。之后创建简单的jni/Android.mk,如下所示:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := jni.cpp # this file will provide native methods for java part
LOCAL_LDLIBS += libYourLibraryBuiltWithGNUToolchain.a
LOCAL_MODULE := YourSoLibrary

include $(BUILD_SHARED_LIBRARY)

之后,您可以使用 ndk-build 脚本构建您的 so 库。

You can use following trick: download agcc, then compile your library with
./configure CC=agcc CXX=agcc --host=arm-linux-androideabi && make. After that create simple jni/Android.mk like this:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := jni.cpp # this file will provide native methods for java part
LOCAL_LDLIBS += libYourLibraryBuiltWithGNUToolchain.a
LOCAL_MODULE := YourSoLibrary

include $(BUILD_SHARED_LIBRARY)

After that you can build your so library with ndk-build script.

放低过去 2024-09-07 14:15:27

最新版本的 ndk 允许您生成一个独立的工具链,它封装了大部分 android 的独特性,以便它可以像普通的 gcc 和支持程序一样被调用。这在某种程度上适合与现有项目构建系统一起使用 - 尽管假设能够在主机上执行目标功能测试代码的配置脚本将会失败,就像它们在任何交叉编译情况下一样。

More recent releases of the ndk allow you to generate a stand-alone toolchain which encapsulates most of the android uniqueness so that it can be invoked more like a normal gcc and support programs. This is somewhat suitable for use with existing project build systems - though configure scripts which assume the ability to execute target feature test code on the host will fail, just as they do in any cross compilation case.

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