Я добавил модуль в каталог framework / av /

Код может быть построен, когда Android.mk заканчивается строкой

include $(BUILD_STATIC_LIBRARY).

Однако, поскольку мне нужен файл общей библиотеки (скажем, abcd.so), я изменил эту строку на

include $(BUILD_SHARED_LIBRARY)

Затем я получил ошибки, относящиеся к некоторым неопределенным ссылочным ошибкам.

Мне здесь нужно было что-то менять?

Благодарность

out/target/product/abcd/obj/SHARED_LIBRARIES/libudev_intermediates/libudev.o: in function udev_new:frameworks/av/libudev/libudev.c:195: error: undefined reference to 'secure_getenv'
target 
Symbolic: libcutils (out/target/product/abcd/symbols/system/lib/libcutils.so)
collect2: ld returned 1 exit status
make: *** [out/target/product/abcd/obj/SHARED_LIBRARIES/libudev_intermediates/LINKED/libudev.so] Error 1
make: *** Waiting for unfinished jobs....
0
Sam 17 Фев 2014 в 13:08
Покажите, пожалуйста, журнал компилятора.
 – 
Alex Chi
17 Фев 2014 в 14:28
Создание статических библиотек не дает вам неопределенных ссылочных ошибок, поскольку предполагает, что они будут обнаружены, когда они будут связаны с реальной динамической библиотекой или исполняемым файлом
 – 
Zharf
17 Фев 2014 в 16:39

1 ответ

Лучший ответ

В системе Android есть много других модулей, которые зависят от модуля static av . Я предлагаю вам создать как статическую библиотеку, так и общую библиотеку. Даже если вы делаете общую библиотеку, вы должны позаботиться о зависимости. Эти изменения могут привести к другим проблемам.

И коды выглядят так:

include $(BUILD_STATIC_LIBRARY)
#appending this line for shared library
LOCAL_MODULE := xxx_shared
include $(BUILD_SHARED_LIBRARY)
1
QJGui 11 Мар 2014 в 15:39