如何将libboost 1.54升级至1.58?Ubuntu 14.04服务器Boost版本差异咨询
问题解答:Ubuntu 14.04 Boost版本差异、共享库错误及升级方案
一、为什么两台机器安装的Boost版本不同?
Ubuntu 14.04官方软件源中默认的Boost版本确实是1.54,但机器2能安装到1.58,大概率是软件源配置的差异:
- 机器1的源还是初始的14.04官方源,没有添加第三方PPA,所以只能获取到官方维护的1.54版本;
- 机器2可能添加了第三方PPA(比如
ppa:boost-latest/ppa这类专门提供新版本Boost的源),或者曾手动编译安装过1.58版本,导致apt-get优先选择了更高版本的包。
二、跨机器编译的共享库加载错误怎么解决?
你遇到的libboost_system.so.1.54.0: cannot open shared object file错误,本质是编译环境和运行环境的Boost版本不匹配:机器1编译的程序依赖1.54的共享库,但机器2只有1.58的库文件。有几个可行的解决思路:
- 静态编译程序:把Boost库的代码直接打包进可执行文件,摆脱对系统共享库的依赖。编译时可以添加静态链接参数,比如用g++编译时:
如果用CMake构建,记得添加g++ your_program.cpp -o your_program -static-libstdc++ -static-libgcc -lboost_system -lboost_xxx # 替换成你用到的Boost库set(Boost_USE_STATIC_LIBS ON)来强制链接静态库。 - 在机器2上安装Boost 1.54:手动下载1.54的源码编译安装,或者找对应deb包安装,让机器2同时存在两个版本的Boost,满足程序的依赖需求。
- 统一两台机器的Boost版本:把机器1的Boost升级到1.58,这样编译环境和运行环境版本一致,自然不会出现依赖错误(这也是最推荐的方案)。
三、如何将机器1的Boost 1.54升级到1.58?
这里提供两种方法,按需选择:
方法1:通过第三方PPA快速升级(推荐)
- 添加Boost的PPA源并更新软件列表:
sudo add-apt-repository ppa:boost-latest/ppa sudo apt-get update - 升级或重装Boost包:
这个PPA专门为旧Ubuntu版本提供较新的Boost包,14.04环境下可以顺利安装到1.58版本。# 先尝试升级 sudo apt-get upgrade libboost-all-dev # 如果升级未生效,先卸载旧版本再重装 sudo apt-get purge libboost-all-dev sudo apt-get install libboost-all-dev
方法2:手动编译源码安装(更可控)
如果PPA源不可用,或者你需要自定义安装路径,可以手动编译:
- 下载并解压Boost 1.58源码:
wget https://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.gz tar xzf boost_1_58_0.tar.gz cd boost_1_58_0 - 安装编译依赖:
sudo apt-get install build-essential libbz2-dev libssl-dev libicu-dev - 配置编译参数(默认安装到
/usr/local,可通过--prefix指定其他路径):./bootstrap.sh --prefix=/usr/local - 编译并安装:
./b2 install - 让系统识别新安装的库:
完成后可以通过echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/boost.conf sudo ldconfigldconfig -p | grep boost确认系统已经优先识别到1.58版本的Boost库。
内容的提问来源于stack exchange,提问作者Helyx
相关产品推荐
相关产品推荐

