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
)

参考文章:CMake和静态库顺序

以上是关于gcc静态库互相依赖问题(cmake静态库链接顺序)(-Wl,--start-group-Wl,--end-group)的主要内容,如果未能解决你的问题,请参考以下文章

CMake和静态库顺序

opencv静态链接库cmake链接顺序问题

静态库链接时的依赖关系和先后顺序

OpenCV静态库编译与链接

CMake:将Fortran与静态C库链接失败

gcc 链接器库搜索顺序;路径加静态与共享