Ubuntu16.04安装boost库(解决部分库不能链接的问题)

Ubuntu下安装boost库很简单,直接执行下面的命令

sudo apt-get install libboost-dev

这样我们的boost库就安装好了,但还是会有一些问题。比如有些库需要我们在编译的时候手动的加上库名。比如filesysem和system这两个库。看下面,假设我们一段代码需要用到了这两个库
这里写图片描述
我在编译的时候就出现了如下问题,我们在g++的时候,加入两个-l选项(-lboost_filesystem 和 -lboost_system),再来看看
这里写图片描述
于是就有了上面的情况,这是因为lib(.so档)的symbolic link 不正确,没有链接到正确的函式库文件(.so)。filesystem和system恰好就是这样两个特殊的库。我们通过locate命令来查找我们的这两个库。 locate(locate) 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次
这里写图片描述
这里看,最上面的四行,有4个特殊的.so类型文件,这是动态链接文件,其中有两个就是我们的filesystem和system,但是他们的目录不是/usr/lib,系统找不到,所以要在/usr/lib/创建一个链接文件,来指向这个动态链接库。

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0 /usr/lib/libboost_filesystem.so

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 /usr/lib/libboost_system.so

这里写图片描述
可以看到已经成功链接过去了。这下再来执行make
这里写图片描述
可以发现这个时候就成功了(最后一行是我用的测试代码的执行代码,不用去管)

总算是成功了,一开始出现了这个问题困扰了我好久,感谢下面这位大佬
Qt 之 运行Qt Creator出现cannot find -lGL的问题的两种解决

猜你喜欢

转载自blog.csdn.net/lvyibin890/article/details/79993852