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的问题的两种解决