g++编译报错undefined reference to `boost::system::generic_category()'的解决方法

最近在学习基于boost库C++网络编程,在ubuntu下用

sudo apt-get install libboost-dev

安装了boost库后,用g++编译程序时报错

undefined reference to `boost::system::generic_category()'

于是上网搜索解决方法,在编译选项中加上了-lboost_system

然而还没完,又出现了新的报错。。。

swings@ubuntu:~/mycode/cpp/timeclient$ make
g++ -std=c++14 -o main main.cpp -lboost_system -lpthread
/usr/bin/ld: cannot find -lboost_system
collect2: error: ld returned 1 exit status
make: *** [main] Error 1

找不到boost_system这个库,为了解决这个问题,首先需要看一下系统中是否有这个库,输入命令

cd /usr
find . -name *boost_system*

原来系统中是有boost_system的,如下

swings@ubuntu:/usr$ find . -name *boost_system*
./lib/x86_64-linux-gnu/libboost_system.so.1.54.0

只是没有相应的软链接libboost_system.so,所以手动加上软链接就好啦,步骤如下

  • 进入so文件所在目录
cd ./lib/x86_64-linux-gnu/
  • 查看boost_system文件
swings@ubuntu:/usr/lib/x86_64-linux-gnu$ ll | grep boost_system
-rw-r--r--  1 root root    14536 Jun 21  2014 libboost_system.so.1.54.0
  • 添加软链接
sudo ln -s libboost_system.so.1.54.0 libboost_system.so
  • 确认软链接已经添加好
swings@ubuntu:/usr/lib/x86_64-linux-gnu$ ll | grep boost_system
lrwxrwxrwx  1 root root       25 Jun  9 00:26 libboost_system.so -> libboost_system.so.1.54.0
-rw-r--r--  1 root root    14536 Jun 21  2014 libboost_system.so.1.54.0
  • 重新编译,解决问题!
swings@ubuntu:~/mycode/cpp/timeclient$ make
g++ -std=c++14 -o main main.cpp -lboost_system -lpthread
swings@ubuntu:~/mycode/cpp/timeclient$ 

你可能感兴趣的:(C/C++)