2014-01-31 3 views
1

Iam пытается скомпилировать мой собственный код. Вот мой android.mk файлAndroid NDK: связывание статической библиотеки с общей библиотекой

//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 компилируется, и он начинает искать ссылку и дает мне неопределенную ошибку reference.Right now. Если я компилирую part1 (static lib), то только он успешно генерирует libirrlicht.a, но с part2 он начинает давать мне ошибку. Что я делаю неправильно.

ответ

4

У вас есть один дополнительный \ в конце вашего первого определения LOCAL_SRC_FILES, это делает часть include ($ BUILD_STATIC_LIBRARY) в LOCAL_SRC_FILES, и строка никогда не разбирается/не выполняется. Другими словами, из-за этого ваше определение модуля для модуля «iirlicht» полностью игнорируется ndk-build, следовательно, проблема, которую вы видите.

Удалите \ после CD3D8Driver.cpp, и это должно исправить его.

2

NDK будет собирать ирриты httest sources, затем irrlich sources, затем создайте libirrlich.a, и только после этого он свяжет libirrlichttest.so. Очень проницательно провести

ndk-build clean all V=1 

и посмотреть в журнале сборки, какие команды фактически выполняются для создания проекта.

Смежные вопросы