正如标题所见,我们就来讲讲开发时遇到的一些问题,以及解决方案
这里不介绍动态库、静态库的生成与调用,
无论是静态库还是动态库,都是在编译项目的时候链接器会根据编译命令去调用的
如果直接把库(动态、静态不论)绝对路径写上,就不用管 要不要加上 -static 参数,
默认情况 编译器是动态链接的
当加入 -static 参数时,就成了静态链接,通常我们可能既有静态库又有动态库需要同时链接,这个时候,就不要添加 -static 参数
会出现 混淆,如果你的环境只有某一个静态库 但是其他的库都是动态库,在链接的过程会出现
形如,这样的问题
解决方案是,要么乖乖把其他的同名静态库装好
#如
centos8 dnf -y install libstdc++-static
或者,把参数 -static 去掉,然后把需要的静态库用绝对路径补全。
#如
g++ ${source} -o out -lphread -lrt /xxx/xxx/test.a
centos7/8
注意,现在你在安装包的服务器上下好的包,环境都会帮你配好,
都在 /usr/lib64 可以找到
参考1
参考2