链接到链接到另一个共享库的共享库会在退出时出错
Linking to a shared library that links to another shared library segfaults on exit
不幸的是,我无法创建一个最小的示例,但情况如下。我有一个链接到另一个库的库,像这样:
add_library(MainLib MainLib.cpp)
add_library(ChildLib ChildLib.cpp)
target_link_libraries(ChildLib MainLib)
我可以这样做(不使用ChildLib,而是直接将ChildLib.cpp
编译到可执行文件中):
ADD_EXECUTABLE(TestNoLink TestNoLink.cpp ChildLib.cpp)
TARGET_LINK_LIBRARIES(TestNoLink MainLib)
一切都可以毫无问题地编译、链接和运行。
但是,如果我这样做(现在使用ChildLib
):
ADD_EXECUTABLE(TestChildLink TestChildLink.cpp)
TARGET_LINK_LIBRARIES(TestChildLink ChildLib) # no need to link to MainLib here because ChildLib already links to MainLib
所有的东西仍然可以编译和链接,它实际上也运行得很好,但在它运行完之后,它就会出现segfault。
我是否应该在这里寻找一些概念来找出是什么导致了这种情况?
问题显然是我链接到了同一个库(Boost库)的共享AND静态版本。链接器不应该注意到这一点并产生错误吗?
相关文章:
- 链接共享库依赖项未在 ldd 中列出
- Gradle cpp 插件不链接共享库
- 从大型 github 项目链接共享库
- 如何在工具ROS中链接共享库
- Linux C++.链接共享对象和主对象
- 共享对象与提升program_options静态链接;应用程序链接共享
- G++ 5.5 不链接共享库
- 根据用户配置在运行时链接共享对象
- 在静态库中链接失败,但链接共享库成功
- G 无法链接共享对象的静态版本
- 仅当标头在 CMake 中更改时,才重新链接共享库
- 动态链接共享库中的全局变量和静态变量会发生什么情况
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- 在VirtualBox的共享文件夹中构建符号链接共享库
- 编译对象后链接共享库时出错
- 如何通过GNU Autotools链接共享库
- 如何以正确的方式编译和链接C/ c++共享对象库
- 无法链接共享对象
- 在 R 包中生成和链接共享库 - 代码编译、链接,但不会加载
- 如何在cmake中链接共享对象