1

Я построил ffmpeg исполняемый двоичный файл с общими библиотеками на Android. Но когда я запускаю его на Marshmallow, я получил следующую ошибку, исполняемый файл не может работать.исполняемый двоичный файл не может работать на android marshmallow

$ LD_LIBRARY_PATH=./lib ./bin/ffmpeg 
CANNOT LINK EXECUTABLE: cannot find "libavformat.so" from verneed[0] in DT_NEEDED list for "./bin/ffmpeg" 
page record for 0xb6eee00c was not found (block_size=16) 

Я уже добавил --extra-ldexeflags="-pie" при компиляции двоичного кода.

Исполняемый двоичный файл выполняется правильно на устройстве pre Marshmallow.

Раньше я не сталкивался с такой проблемой, не пропустил ли я что-то важное? Как я могу сделать эту двоичную работу на Marshmallow?

Дополнительная информация о моей среде.

Я использовал android-ndk-r10e с

SYSROOT=$ANDROID_NDK_ROOT/platforms/android-19/arch-arm и компилированные инструменты версия

arm-linux-androideabi-gcc (GCC) 4.9 20140827 (prerelease)

Если я построил ffmpeg в один исполняемый бинарный файл (построить статические библиотеки, а затем встраивают в бинарный), запустить его должным образом.

ответ

2

После многого поиска я нашел аналогичную проблему от here. Проблема с моими общими библиотеками.

FFmpeg сценарий сборки отключить SONAME для сборки Android, так что нет SONAME найдены при чтении библиотеки по команде

arm-linux-androideabi-readelf -d libavutil.so |grep soname

Измените сценарий конфигурации как следующее, он будет работать.

android) 
    disable symver 
    enable section_data_rel_ro 
    SLIB_INSTALL_NAME='$(SLIBNAME)' 
    SLIB_INSTALL_LINKS= 
    # soname not set on purpose 
    # soname should set for new version Android 
    SHFLAGS='-shared -Wl,-soname,$$(word 1,$$(subst ., ,$$(@F))).so' 
    # SHFLAGS=-shared 

После затем перекомпилировать ffmpeg генерировать общий доступ к библиотекам, и я получил результат я хочу,

$ arm-linux-androideabi-readelf -d libavutil.so |grep soname 
0x0000000e (SONAME)      Library soname: [libavutil.so] 

Затем исполняемый бинарный прогон правильно.

+0

Ссылка не может быть достигнута. :( – DysaniazzZ

Смежные вопросы