首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >yum :在centos上使用boost 1.69而不是默认版本(1.53)

yum :在centos上使用boost 1.69而不是默认版本(1.53)
EN

Stack Overflow用户
提问于 2020-06-09 10:20:09
回答 2查看 5K关注 0票数 4

我希望使用boost 1.69编译(c++/cmake)代码。我在七号列车上。

之后:

代码语言:javascript
运行
复制
sudo yum install boost-devel.x86.64

代码编译得很好,但使用的默认版本是1.53。

如果我查看安装在/lib64中的库,例如:

代码语言:javascript
运行
复制
>> ls -al  /lib64/ | grep boost_timer
lrwxrwxrwx.   1 root root          27 Jun  9 11:50 libboost_timer-mt.so -> libboost_timer-mt.so.1.53.0
-rwxr-xr-x.   1 root root       19848 Apr  1 04:26 libboost_timer-mt.so.1.53.0

boost 1.69的yum安装也是可用的。所以我可以:

代码语言:javascript
运行
复制
sudo yum install boost169-devel.x86_64

,例如更新/lib64 64/的内容。

代码语言:javascript
运行
复制
>> ls -al  /lib64/ | grep boost_timer
lrwxrwxrwx.   1 root root          27 Jun  9 11:50 libboost_timer-mt.so -> libboost_timer-mt.so.1.53.0
-rwxr-xr-x.   1 root root       19848 Apr  1 04:26 libboost_timer-mt.so.1.53.0
lrwxrwxrwx.   1 root root          24 Jun  9 11:50 libboost_timer.so -> libboost_timer.so.1.53.0
-rwxr-xr-x.   1 root root       19848 Apr  1 04:26 libboost_timer.so.1.53.0
-rwxr-xr-x.   1 root root       24104 Apr 23  2019 libboost_timer.so.1.69.0

此外:

代码语言:javascript
运行
复制
>> ls /usr/include/ | grep boost
boost
boost169

此时,我的工作区仍然编译,但仍然使用1.53。

我希望我的工作区使用1.69进行编译。我可以通过拙劣的FindBoost.cmake来实现这一点,但这并不是要做的事情。

我还尝试(yum)删除了boost-dev.x86-64,它删除了/usr/include/boost文件夹和/lib64中的相关so文件,例如:

代码语言:javascript
运行
复制
>> ls -al /lib64/ | grep boost_timer
libboost_timer-mt.so.1.53.0
libboost_timer.so.1.53.0
libboost_timer.so.1.69.0

(请注意,不再存在"libboost_timer-mt.so")

在这一点上,我相信我也可以通过手动创建符号链接/usr/include/boost和/ like 64/libboost_*来编译我的工作区,但这也不像是要做的干净的事情。

(注意:我创建了指向/usr/include/boost 64/boost的符号链接/usr/include/boost,而且cmake确实停止了对BOOST_INCLUDE_DIR的抱怨,但由于我没有为库创建符号链接,cmake仍然抱怨这些链接)。

是否有更干净的替代方法来手动创建符号链接?

编辑:我确实为编译器抱怨的所有boost相关库创建了手动符号链接,我可以确认这是有效的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-09 13:19:39

很明显,这里有BOOST_INCLUDE_DIR,您可以使用它来控制boost头,那么为什么不只是

代码语言:javascript
运行
复制
cmake -DBOOST_INCLUDEDIR=/usr/include/boost169 \
  -DBOOST_LIBRARYDIR=/usr/lib64/boost169 \
  ...
票数 4
EN

Stack Overflow用户

发布于 2022-02-17 02:18:30

最接近设置CMake默认值的方法是将BOOST_INCLUDEDIRBOOST_LIBRARYDIR设置为环境变量。FindBoost.cmake在环境中显式地查找这些变量(默认情况下CMake不会这样做)。因此,您可以在某个地方全局调用export BOOST_INCLUDEDIR=/usr/include/boost169export BOOST_LIBRARYDIR=/usr/lib64/boost169,也可以使用BOOST_INCLUDEDIR=/usr/include/boost169 BOOST_LIBRARYDIR=/usr/lib64/boost169 ./mybuild.sh (当然,假设mybuild.sh最终调用CMake或处理这些环境变量本身)包装命令调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62280304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档