android - 如何使用ndk-build构建不同文件夹下的源文件?

标签 android android-ndk

我知道要构建 so 文件,我应该将源文件放在/jni/文件夹中。 但是如何在不同的文件夹中构建单独的 so。

比如我项目的结构:

/jni/Android.mk
/jni/submodule1/Android.mk
/jni/submodule1/sub1.c
/jni/submodule2/Android.mk
/jni/submodule2/sub2.c

我试着在顶层的 Android.mk 中写这个:

$(LOCAL_PATH) :=$(call all-makefiles-under)

然后在子模块的Android.mk中写入make info

错误是:

ndk-build 
make: *** No rule to make target `/home/../workspace/jni/sub.c', needed b
y `/home/../workspace/obj/local/armeabi/objs/submodule/sub.o'.  Stop.

谁能给我一个解决方案?谢谢!

更新 1: 子模块中Android.mk的代码:

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

 LOCAL_SRC_FILES := sub.c 

 LOCAL_C_INCLUDES := $(LOCAL_PATH)

 LOCAL_MODULE := sub
 LOCAL_LDLIBS := -ldl -llog
 LOCAL_STATIC_LIBRARIES := libc

 LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
 LOCAL_MODULE_TAGS := debug
 include $(BUILD_EXECUTABLE)

已解决:

我应该在根目录中使用 ndk-build,而不是在 jni 目录中。谢谢大家!

最佳答案

你应该尝试 include $(call all-subdir-makefiles) 而不是在 main Android.mk 并在 jni 文件夹下创建文件夹,其中包含单独的 c 文件和 Android.mk 文件

关于android - 如何使用ndk-build构建不同文件夹下的源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18207863/

相关文章:

android-studio - Android Studio/Gradle没有在APK中打包名为“mylib.so.1”的共享库

Android:在 WebView 中缩放 SVG

android - Android 上用于 RSS 的 SQLite 或内部存储?

Android MediaPlayer 错误代码?

java - 在 Android 应用程序中设置和打开 fragment 的问题

android-ndk - 将android ndk构建文件转换为gradle

android - 如何从 google fit 读取消耗卡路里数和剩余卡路里数

java - Telegram 不能用不同的包名编译

android - 如何授予android shell 用户更多权限?

android - 每个 ABI 的不同库搜索路径