问题:
我在安装 Ubuntu 16.04 时使用 CMake 和 GCC4.9 将 glibcc/glibc++ 链接到共享库时遇到困难。
附加条件:
加载共享库会给 Red Hat 生产环境(我将它复制到的地方)带来问题,我相信因为它使用了不同的 libstc++ 版本(错误:未找到 GLIBCXX_3_4_20)。我没有 sudo 权限,无法升级机器。
正如我从 this 得出的那样博客,这个 post ,我尝试使用以下方法链接静态链接与 libgcc 和 libgc++:
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
再次使用
set(CMAKE_SHARED_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
但这不起作用。 起作用的是这个 CMake 脚本:
add_library(myLib SHARED ${SOURCE_FILES})
set(CMAKE_EXE_LINKER_FLAGS " -static")
target_link_libraries(myLib -static-libgcc -static-libstdc++)
这一定是错误的做法,据我所知 -static-libgcc 和 -static-libstdc++ 是链接器选项,而不是库...
问题: 如何正确静态链接 -libgcc 和 -libstdc++?
提前致谢!
最佳答案
是的,target_link_libraries
是设置链接器标志或链接器选项的正确方法。
target_link_libraries
的文档:
Specify libraries or flags to use when linking a given target.
Item names starting with -, but not -l or -framework, are treated as linker flags.
https://cmake.org/cmake/help/latest/command/target_link_libraries.html (重点不在原文)
关于c++ - CMake:将 libgcc 和 libstdc++ 静态链接到共享库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38694058/