问题描述
.
|--src
| |--foo
| | |--foo.h
| | |--foo.cpp
| | |--CMakeLists.txt
| |
| |--bar
| |--bar.h
| |--bar.cpp
| |--CMakeLists.txt
|
|--main.cpp
|--CMakeLists.txt
我通过在foo
中使用bar
将add_library(foo STATIC ${FOO_DIR})
和CMakeLists.txt
添加为静态库。
在顶级CMakeLists.txt中:
project(my_proj)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static")
#find abc libs
find_package(abc required)
...
#adding foo bar subdirectories
...
add_executable(my_proj main.cpp)
target_link_libraries(my_proj foo bar abc)
main.cpp链接foo
,bar
和abc.so
时,显示错误:
attempted static link of dynamic object /xxx/abc.so
我该如何同时链接共享库和静态库?
更新
ibQt5Core.a(qstringlist.o): undefined reference to symbol '_ZNSt3pmr25monotonic_buffer_resourceD1Ev@@GLIBCXX_3.4.28'
/usr/bin/ld: /usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
即使我明确使用它,它也链接到libstdc ++共享库
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
如何链接静态libstdc ++?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)