Наш продукт содержит несколько исходных пакетов. Некоторые исходные пакеты создаются с использованием autotool / conf.
Основываясь на том, что Google сказал о переходе на clang в качестве компилятора по умолчанию для NDK, начиная с NDK-13, мы продолжили работу с переключателем в файлах * .mk, а также в наших скриптах установки и сборки env. Не делать файлы, где изменилось.
Мы использовали NDK-10d, который является старым, поэтому мы перешли на NDK-12b. Мы также создали автономный набор инструментов, как это рекомендовано в документации Android, чтобы упростить наши сценарии сборки и стандартизировать все.
Проблема, с которой я сталкиваюсь, — это сбой при запуске, как только загружается нативный код. То, что я заметил, это предупреждение в logcat относительно: unused DT entry: type 0x6ffffffe
(VERNEED) а также 0x6fffffff
(VERNEEDNUM).
Затем, страшно A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x30 in tid 22246
,
Трассировка стека говорит мне очень и очень мало:
08-11 15:31:02.421 128-128/? I/DEBUG: #00 pc 00036b8c /system/lib/libc.so
08-11 15:31:02.421 128-128/? I/DEBUG: #01 pc 0003817b /system/lib/libc.so (vfprintf+18)
08-11 15:31:02.421 128-128/? I/DEBUG: #02 pc 00035251 /system/lib/libc.so (fprintf+12)
08-11 15:31:02.421 128-128/? I/DEBUG: #03 pc 000015fd /data/app/com.myapp.demo-1/lib/arm/libappdebug.so (pipe_listen+328)
08-11 15:31:02.421 128-128/? I/DEBUG: #04 pc 0001659b /system/lib/libc.so
08-11 15:31:02.421 128-128/? I/DEBUG: #05 pc 000144c3 /system/lib/libc.so
Обратите внимание, что при сравнении данных в ELFs с readelf -d
показывает отсутствие этих двух записей DT в двоичных файлах, сгенерированных рука-линукс-androideabi-НКУ-4,9 строит.
Любые идеи, указатели, … все что угодно …, будет высоко ценится, потому что я застрял (румянец) 3 дня сейчас.
Благодарю.
Вы должны посмотреть на проблему вашего unused DT entry
, Если вы используете свою библиотеку для передачи чего-либо в другое место, это предупреждение будет появляться при каждом запуске и подвергать опасности ваш канал для получения мусора или ваше приложение для получения исключений. Пожалуйста, посмотрите на мой пост Вот.
Других решений пока нет …