2017-01-31 16 views
1

Я объясняю свою проблему:предупреждение: разделяемая библиотека текстовый сегмент не разделяется

Мой проект - приложение для Android с использованием C++ с NDK.

Мне нужно включить библиотеку ffmpeg в свой проект.

Я построил FFmpeg с этим Tuto: https://github.com/WritingMinds/ffmpeg-android (Я посмотрел на сценарий, похоже, что он построен для статической ссылки)

Мой cmakelist.txt не работает, ошибок нет. Но когда я запускаю свою программу, я получил это сообщение: (я сократить его или это слишком долго)

[1/1] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86/libgestionnaire.so

/local/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: warning: shared library text segment is not shareable

/local/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: treating warnings

С наилучшими пожеланиями

+0

Название не имеет смысла. Вы получаете предупреждение, что раздел разделяемой библиотеки не разделяется, что (в соответствии с параметрами компоновщика) рассматривается как ошибка. Когда google для предупреждения, первая ссылка дает [этот вопрос] (http://stackoverflow.com/questions/19986523/shared-library-text-segment-is-not-shareable). В его ответах предлагается использовать опцию компоновщика '-Wl, - no-warn-shared-textrel' для подавления таких предупреждений. – Tsyvarev

+0

Привет, спасибо за ответ. Я не был уверен в названии (я настоящий начинающий). Поэтому в моем cmakelist я добавил следующее: set (CMAKE_CXX_FLAGS '" $ {CMAKE_CXX_FLAGS} -std = gnu ++ 11 -Wl --no-warn-shared-textrel ")' И теперь я получил сообщение об ошибке (хорошее part i guess): 'clang ++: ошибка: неподдерживаемая опция '--no-warn-shared-textrel'' –

+0

Это ** линкер **, поэтому вы должны назначить переменную * CMAKE_EXE_LINKER_FLAGS *. Кроме того, ** запятая ** после '-Wl' является ** частью опции **, и после нее не должно быть места. – Tsyvarev

ответ

1

Ok ребята, так что благодаря @textrel и @Tsyvarev, я может решить мою проблему, это было довольно легко:

Я добавил эти строки в моей cmakelist.txt:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") 

set(CMAKE_SHARED_LINKER_FLAGS "-Wall -v -Wl,--no-warn-shared-textrel") 

С уважением

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

  • Нет связанных вопросов^_^