gcc静态库互相依赖问题(cmake静态库链接顺序)(-Wl,--start-group-Wl,--end-group)
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc静态库互相依赖问题(cmake静态库链接顺序)(-Wl,--start-group-Wl,--end-group)相关的知识,希望对你有一定的参考价值。
我的A.lib依赖B.lib,B.lib依赖A.lib,我在CMakeLists里加上的链接顺序都失效了。。。编译时说unreferenced
看了这篇文章,说可以用-la -lb -la -lb -la
重复写链接库解决,我试试
貌似通过改变顺序可以解决,但是静态库较多,依赖情况较多,要写对顺序不容易,
这篇文章提供了一个办法,即给不想弄顺序的静态库们,弄一个start、end包在一起,然后cmake会自动解决里面的顺序问题
我按照它介绍的,把CMakeLists改成这样就好了
# target_link_libraries(kyai ngrestutils ngrestcommon ngrestjson ngrestengine $ENVNGREST_EXT_LIBS pthread)
target_link_libraries(
kyai
ngrestutils
ngrestcommon
ngrestjson
ngrestengine
$ENVNGREST_EXT_LIBS
pthread
-Wl,--start-group
ky_ai_socket
ky_ai_api
ky_ai_parse_json
-Wl,--end-group
)
以上是关于gcc静态库互相依赖问题(cmake静态库链接顺序)(-Wl,--start-group-Wl,--end-group)的主要内容,如果未能解决你的问题,请参考以下文章