繁体   English   中英

Android NDK:将静态库与共享库链接

[英]Android NDK:linking static library with shared library

我正在尝试编译我的本机代码。 这是我的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模块先编译,它开始寻找引用,并给了我未定义的引用错误。它成功生成了libirrlicht.a,但是在第2部分中,它开始给我错误,我在做什么错。

在第一个LOCAL_SRC_FILES定义的末尾有一个\\,这使得'include $(BUILD_STATIC_LIBRARY)'部分进入LOCAL_SRC_FILES,并且该行从不解析/执行。 换句话说,由于这个原因,ndk-build完全忽略了“ iirlicht”模块的模块定义,因此出现了问题。

在CD3D8Driver.cpp之后删除\\,这应该可以解决。

NDK将先编译irrlichttest源代码,然后编译irrlichttest源代码,然后创建libirrlichich.a,只有在此之后,它将链接libirrlichttest.so。 运行非常有见地

ndk-build clean all V=1

并在构建日志中查看实际执行了哪些命令以构建项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM