如何在cmake中引用静态库(.a)

如何在cmake中引用静态库(.a),第1张

1.头文件

include存放的是编译库文件生成的头文件集合,比如curl目录,目录中都是.h文件,添加方式如下:

2.库文件

lib是存放库文件的目录,形如libxxx.so或libxxx.a形式的文件,添加方式如下:

3.引用

库的引用可以直接取libxxx.a中的xxx部分,如下的curl、ssl、crypto就是:

1.编译报错“undefined reference to `pthread_create'”

解决办法:引入pthread库

2.编译报错“libcrypto.a undefined reference to symbol 'dlclose'”

解决办法: add -ldl after libcrypto and libssl in your link command.

原文地址: https://justchen.com/2017/02/27/cmake%E7%BC%96%E8%AF%91%E7%BC%BA%E5%A4%B1pthread_create%E7%AD%89thread%E5%BA%93%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.html

在使用cmake来编译项目时,明明在CMAKE_CXX_FLAGS项中设置了-lpthread项目,在运行生成makefile时确实也看到了有-lpthread,但还是报错:对‘pthread_create’未定义的引用,简直是日了狗了…

后来google到了答案,如果是cmake项目需要修改Cmakefile.txt,增加以下内容

果然,加上后就解决问题了,makefile,只是把-lpthread移到了最后,如果只是动CMAKE_CXX_FLAGS项-lpthread是紧根着g++后,也许这样不起作用….

虽然include了头文件,但是编译时就报错。解决方法如下:

看到截图的最后一行,已经说明了需要link pthread库,那我们就可以配置了。

问题完美解决


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11483438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存