我试图编译我的本机代码。这是我的android.mk文件
//part1-static lib
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := irrlicht
IRRLICHT_LIB_NAME := lib$(LOCAL_MODULE).a
LOCAL_C_INCLUDES := include
LOCAL_SRC_FILES := \
CColorConverter.cpp \
CCSMLoader.cpp \
CCubeSceneNode.cpp \
CD3D8Driver.cpp \
include $(BUILD_STATIC_LIBRARY)
//part-2 shared lib
include $(CLEAR_VARS)
LOCAL_MODULE := irrlichttest
LOCAL_SRC_FILES := test-app.cpp test.cpp android-receiver.cpp
LOCAL_C_INCLUDES := include
LOCAL_CFLAGS := -O3 -DANDROID_NDK -DDISABLE_IMPORTGL -I$(LOCAL_PATH)/../include/ - I./include/
LOCAL_CPPFLAGS := -Wno-error=format-security
LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lGLESv2
LOCAL_STATIC_LIBRARIES := irrlicht
include $(BUILD_SHARED_LIBRARY)
这是我的application.mk
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-10
APP_MODULE := irrlicht irrlichttest
我想首先编译“irrlicht”模块然后再编译“irrlichttest”模块。我面临的问题是我的irrlichttest模块首先编译并开始寻找参考并给我未定义的引用错误。现在如果我编译part1(静态) lib)只有它成功生成了libirrlicht.a,但是对于part2它开始给我错误。我做错了什么。
答案 0 :(得分:4)
在第一个LOCAL_SRC_FILES定义的末尾有一个额外的\,这使得'include $(BUILD_STATIC_LIBRARY)'部分进入LOCAL_SRC_FILES,并且永远不会解析/执行该行。换句话说,由于这个'iirlicht'模块的模块定义被ndk-build完全忽略,因此你看到了问题。
在CD3D8Driver.cpp之后删除\,这应该修复它。
答案 1 :(得分:2)
NDK将编译irrlichttest源,然后是irrlich源,然后创建libirrlich.a,之后它将链接libirrlichttest.so。运行
是非常有见地的ndk-build clean all V=1
并在构建日志中查看实际执行哪些命令来构建项目。