Где NDK ищет библиотеки?
Предположим, я хочу скомпилировать с NDK функцию C++, которая в своем теле вызывает функцию из библиотеки (например, STL и т. Д.). Как сообщить NDK, где находится мой компьютер, чтобы библиотека, чтобы при компиляции моей функции C++ NDK выполняла переход при вызове функции из библиотеки?
1 ответ
Вы должны указать свои библиотеки в вашем Android.mk
файл.
Для стандартной библиотеки вам нужно только указать в Application.mk
какой вы хотите использовать, то есть:
APP_STL=gnustl_shared
для стандартной библиотеки GCC.
Для других ваших библиотек, вы должны положить в Android.mk
файл, какую библиотеку вы хотите использовать, и скажите ndk, чтобы построить их, если это необходимо.
Для уже созданной библиотеки положите
include $(CLEAR_VARS)
LOCAL_MODULE=<give a name to the lib you want to link>
LOCAL_EXPORT_C_INCLUDES=<path to your lib include directory>
LOCAL_SRC_FILE=<path to your library binary file>
include $(PREBUILT_SHARED_LIBRARY) #or STATIC if your lib is static
Для библиотеки, которая должна быть собрана, поместите
include $(CLEAR_VARS)
LOCAL_MODULE=<give a name to the lib you want to link>
LOCAL_SRC_FILE=<list all the files necessary to build your lib>
LOCAL_EXPORT_C_INCLUDES=<path to your lib include directory>
include $(BUILD_SHARED_LIBRARY) #or STATIC if you want to build it static
Затем, после этого, просто добавьте следующее
LOCAL_STATIC_LIBRARIES=<list your static libs **using their LOCAL_MODULE names**>
LOCAL_SHARED_LIBRARIES=<list your shared libs **using their LOCAL_MODULE names**>
и вуаля!