android — NDK12b: различные ELF, созданные clang и gcc с использованием отдельного набора инструментов и одних и тех же скриптов сборки

Наш продукт содержит несколько исходных пакетов. Некоторые исходные пакеты создаются с использованием 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 дня сейчас.

Благодарю.

2

Решение

Вы должны посмотреть на проблему вашего unused DT entry, Если вы используете свою библиотеку для передачи чего-либо в другое место, это предупреждение будет появляться при каждом запуске и подвергать опасности ваш канал для получения мусора или ваше приложение для получения исключений. Пожалуйста, посмотрите на мой пост Вот.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]