Наш продукт содержит несколько исходных пакетов. Некоторые исходные пакеты собраны с использованием 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
Обратите внимание, что сравнение данных в файлах ELF, выгруженных readelf -d
, показывает отсутствие этих двух записей DT в двоичных файлах, сгенерированных сборками arm-linux-androideabi-gcc-4.9.
Любые идеи, указатели, ... вообще что угодно ..., были бы очень признательны, потому что я застрял на (румянец) 3 дня.
Спасибо.
readelf -d
для двух версий... - person not2qubit   schedule 04.02.2017