【问题标题】:warning: shared library text segment is not shareable警告:共享库文本段不可共享
【发布时间】:2017-01-31 13:11:52
【问题描述】:

我解释我的问题:

我的项目是一个使用 C++ 和 NDK 的 android 应用程序。

我必须将库 ffmpeg 包含到我的项目中。

我已经用这个 tuto 构建了 ffmpeg:https://github.com/WritingMinds/ffmpeg-android(我看过脚本,它看起来像是为静态链接构建的)

我的 cmakelist.txt 正在运行,没有错误。但是当我运行我的程序时,我收到了这条消息: (我剪了还是太长了)

[1/1] 链接 CXX 共享库 ../../../../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:警告:共享库文本段不可共享

/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: 错误:处理警告

最好的问候

【问题讨论】:

  • 标题毫无意义。您会收到警告shared library text segment is not shareable,它(根据链接器选项)被视为错误。当谷歌警告信息时,第一个参考给出this question。它的答案建议使用链接器选项-Wl,--no-warn-shared-textrel 来抑制此类警告。
  • 您好,感谢您的回答。我不确定标题(我是一个真正的初学者)。所以在我的 cmakelist 中我添加了这个: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wl --no-warn-shared-textrel") 现在我收到了这个消息错误(我猜是好的部分):clang++: error: unsupported option '--no-warn-shared-textrel'
  • 这是一个链接器选项,所以你应该分配变量CMAKE_EXE_LINKER_FLAGS。另外,-Wl 后面的 逗号选项的一部分,后面不能有空格。
  • 你是对的,问题来自于昏迷。但我仍然对这些标志有同样的问题
  • 随时发布您的解决方案作为答案并将其标记为已接受。接受自己的答案是完全可以的(并且接受的答案会让其他人更容易找到它)。

标签: android c++ ffmpeg android-ndk cmake


【解决方案1】:

好的,感谢@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")

最好的问候

【讨论】:

  • --no-warn-shared-textrel 在运行时导致“有文本重定位”错误
猜你喜欢
  • 2013-11-27
  • 2017-03-07
  • 2010-12-10
  • 2011-08-27
  • 2012-03-20
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多