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

问题描述 投票:0回答:1

我想用boost 1.69编译(c++cmake)代码。我使用的是centos 7。

在使用.NET Framework 2.0后,代码可以正常编译,但使用默认的1.53版本。

sudo yum install boost-devel.x86.64

代码可以正常编译,但使用的是默认的1.53版本。

如果我查看lib64中安装的库,我看到了例如。

>> 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

yum安装的boost 1. 69也是可用的。所以我可以这样做。

sudo yum install boost169-devel.x86_64

例如更新lib64的内容

>> 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

也是:

>> ls /usr/include/ | grep boost
boost
boost169

现在我的工作区仍然在编译,但仍然使用1.53。

我想让我的工作区用1.69来编译。我可以通过破坏 FindBoost.cmake 来实现,但感觉这样做不太干净。

另外我还试着(yum)删除了boost-dev.x86-64,删除了usrincludeboost文件夹和lib64中的相关so文件,这就留下了例如。

>> 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 "了)

在这一点上,我相信我也可以通过手动创建usrincludeboost和lib64libboost_*.so的符号链接来让我的工作空间编译,但这也不像是干净的事情。

(注:我创建了指向usrincludeboost64boost的符号链接usrincludeboost,确实cmake不再抱怨BOOST_INCLUDE_DIR,但由于我没有为库创建符号链接,cmake仍然抱怨这些)。

有没有比手动创建符号链接更简单的方法?


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

c++ boost cmake centos yum
1个回答
0
投票

所以很明显 BOOST_INCLUDE_DIR 你可以用它来控制增压头的位置,所以为什么不直接用

cmake -DBOOST_INCLUDEDIR=/usr/include/boost169 \
  -DBOOST_LIBRARYDIR=/usr/lib64/boost169 \
  ...
© www.soinside.com 2019 - 2024. All rights reserved.