centos7安装boost记录

本文详细记录了在CentOS7服务器上安装Boost库的过程及遇到的gcc版本问题。作者首先尝试使用wget下载并解压Boost源码,然后运行./bootstrap.sh和./b2命令进行编译安装,但因gcc版本过低导致编译失败。接着,通过yum安装devtoolset-7来切换到gcc7版本,然而仍然未能成功。最后,作者提到了在Windows 11的WSL2环境下安装CentOS7并尝试安装Boost的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

centos7腾讯服务器安装记

首先打开官网中的下载网页
downloads页面
找到你需要的安装包,我这里选择的是boost_1_78_0.tar.gz的链接,右键打开就可以看到有个复制链接的选项。然后在我的服务器中输入获取压缩包命令

 wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz

下载好了以后,你可以在当前目录看到boost_1_78_0.tar.gz的压缩包,解压后,进行编译安装吧。
进入安装目录,输入以下命令:

./bootstrap.sh; ./b2 --buildtype=complete install

得到以下结果

Building B2 engine..

Could not find a suitable toolset.

You can specify the toolset as the argument, i.e.:
    ./build.sh [options] gcc

Toolsets supported by this script are:
    acc, clang, como, gcc, intel-darwin, intel-linux, kcc, kylix, mipspro,
    pathscale, pgi, qcc, sun, sunpro, tru64cxx, vacpp

For any toolset you can override the path to the compiler with the '--cxx'
option. You can also use additional flags for the compiler with the
'--cxxflags' option.

A special toolset; cxx, is available which is used as a fallback when a more
specific toolset is not found and the cxx command is detected. The 'cxx'
toolset will use the '--cxx' and '--cxxflags' options, if present.

Options:
    --help                  Show this help message.
    --verbose               Show messages about what this script is doing.
    --debug                 Build b2 with debug information, and no
                            optimizations.
    --guess-toolset         Print the toolset we can detect for building.
    --cxx=CXX               The compiler exec to use instead of the detected
                            compiler exec.
    --cxxflags=CXXFLAGS     The compiler flags to use in addition to the
                            flags for the detected compiler.



Failed to build B2 build engine

百度得到的结果是当前的gcc版本不对,然后检查一下,当前版本为4.8.5,的确不对应,一般应该是gcc7版本,然后切换一下gcc版本,使用centos的scl来进行切换

yum install centos-release-scl
yum install scl-utils
yum install devtoolset-7-toolchain#安装gcc7版本

安装好了以后查看一下

[root@VM-0-17-centos boost_1_78_0]# scl --list
devtoolset-7
[root@VM-0-17-centos boost_1_78_0]# scl enable devtoolset-7 bash
[root@VM-0-17-centos boost_1_78_0]# gcc -v
gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)

的确切换到了gcc7版本,重新跑一下看看

[root@VM-0-17-centos boost_1_78_0]# ./bootstrap.sh
Building B2 engine..

###
###
### Using 'cxx' toolset.
###
###

cpp (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


###
###

> cpp -DNDEBUG builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp execcmd.cpp execnt.cpp execunix.cpp filesys.cpp filent.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp native.cpp object.cpp option.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp subst.cpp sysinfo.cpp timestamp.cpp variable.cpp w32_getreg.cpp modules/order.cpp modules/path.cpp modules/property-set.cpp modules/regex.cpp modules/sequence.cpp modules/set.cpp -o b2
cpp: fatal error: too many input files
compilation terminated.
> cp b2 bjam
cp: cannot stat ‘b2’: No such file or directory

Failed to build B2 build engine

嗯,不出所料,还是失败,没有编译成功b2解释器,最后还是没能解决问题,准备在win11的WSL2中试验centos7安装boost来比对一下。

win11的centos7子系统安装

之前在开启WSL2服务的时候就在电脑里面搜索过centos系统,结果商店不支持,都是付费的,所以只能通过LxRunOffline来运行魔改版的centos了。

首先,LxRunOffline是一个WSL的第三方工具,是我国大牛开发的用来弥补WSL的不足的,主要可以实现任何Linux发行版的WSL形式,是个强大的管理工具,但使用起来却很简单,我们用得上的也就两个文件:LxRunOffline.exe和LxRunOfflineShellExt.dll

进入github中的下载链接(可能很多新学者不习惯逛github,但这个强大的代码托管平台真的很适合你来熟悉),进去之后直接下载压缩包即可,我选择的是LxRunOffline-v3.5.0-msvc.zip,3.5版本的。
在这里插入图片描述
下载好了以后解压缩,然后得到这两个文件:LxRunOfflineShellExt.dll和LxRunOffline.exe,将他们放置到C:\Windows\System32下,然后在这个文件夹下用管理员身份打开cmd终端输入以下命令完成功能注册。

regsvr32 LxRunOfflineShellExt.dll

现在到这里,LxRunOffline就安装好了,现在我们还需要centos7的魔改版镜像,也很容易找到,就在LxRunOffline的gitbub项目下的centos分支中
centos7.8镜像
(点击界面中的download来下载镜像,大家应该都知道的)
在这里插入图片描述

下载好以后需要存放在一个全英文路径下(看教程这么说的,但我也没试过放中文路径咋样,类似的情况倒是在其他软件安装使用时试过),然后使用LxRunOffline的install命令,如下:

PS E:\document> LxRunOffline install -n CentOS -f E:\document\centos-7.8.2003-x86_64-docker.tar.xz -d E:\linux\centos7.8
[WARNING] Love this tool? Would you like to make a donation: https://github.com/DDoSolitary/LxRunOffline/blob/master/README.md#donation

上面-f参数就是表明我的centos7.8镜像位置,-d就是我的centos7的wsl形式安装路径,install完毕以后在这个路径下就能看到安装好的目录列表,毕竟‘linux一切皆文件’(鸟哥说的)。
在这里插入图片描述
然后我们可以用LxRunOffline检查一下当前安装过的linux版本,Ubuntu和Debian都是我通过电脑的软件商店安装的,然后Centos是新加的,可以看到在这里有显示了,另外还需要新增一个桌面快捷方式,后面的命令就是做这个作业的。

PS E:\document> LxRunOffline l
Ubuntu
Debian
CentOS
PS E:\document> LxRunOffline s -n CentOS -f C:\Users\samu\Desktop\CentOS7.8.lnk

也可以通过wsl -d centos的命令在cmd终端进行系统切换,效果如下:

PS C:\Users\samu\Desktop> wsl -d centos
[root@DESKTOP-SJO8SMG Desktop]# cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)

可通过exit方式退出centos,而桌面快捷方式打开是这样的
在这里插入图片描述
要注意的是,这个时候的centos系统应该是按照最小安装进行的,所以很多命令你在使用的时候会出现-bash: command not found的情况。不过幸好它配置了yum安装工具,你可以很方便的安装你需要的命令。

–更新一下:除了上面的方式来打开Centos,在上面的都搞定关机重启后使用windows terminal后,应该能够在下面的位置看到centos子系统,这样就能直接打开了。(我的win11是这样的,其他的不知道,如果有不同的情况请指明,我再更改以免误导大家)
在这里插入图片描述

LxRunOffline的centos7安装boost记

当前所处的centos7有很多命令都需要另外安装,包括获取安装包的wget命令,所以我们先安装下需要的工具吧。

yum -y install wget
yum -y install sudo
sudo yum install gcc

上面安装的是gcc4版本,所以上面在centos服务器上进行过的scl操作也要进行一次。

yum install centos-release-scl
yum install scl-utils
yum install devtoolset-7-toolchain#安装gcc7版本
scl enable devtoolset-7 bash

然后就获取压缩包,解压压缩包,巴拉巴拉。

wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz
tar xvzf boost_1_78_0.tar.gz

切换到boost_1_78_0.tar.gz的根目录下,运行bootstrap.sh脚本生成boost的build程序b2

./bootstrap.sh

不过我这个好像还是有点问题,生成过程中出现Unicode/ICU support for Boost.Regex?.. not found.这样一个情况,不过b2好像是生成在本目录下了,运行一下。

./b2 --buildtype=complete install

因为我想要比较全面地boost库,所以使用了全部安装,具体其他参数大家可以百度一下,应该很简单就能找到了。说明一下,我这里的安装都是生成在/usr/local目录下了,部分实现文件在lib目录下,其他大多以.hpp(.h+.cpp,声明+实现)的形式存放在include目录下。
测试如下

#include <iostream>                                                                                            
#include <boost/version.hpp>                                                                                   
#include <boost/config.hpp>                                                                                                                                                                                                   
using namespace std;                                                                                                                                                                                                          
int main() {                                                                                                           
cout << BOOST_VERSION << endl;                                                                                 
cout << BOOST_LIB_VERSION << endl;                                                                             
cout << BOOST_PLATFORM << endl;                                                                                
cout << BOOST_COMPILER << endl;                                                                                
cout << BOOST_STDLIB << endl;                           
return 0;
}

寻常编译,结果如下:

[root@DESKTOP-SJO8SMG project]# g++ version.cpp -o version                                                     
[root@DESKTOP-SJO8SMG project]# ./version                                                                      
107800                                                                                                         
1_78                                                                                                           
linux                                                                                                          
GNU C++ version 7.3.1 20180303 (Red Hat 7.3.1-5)                                                               
GNU libstdc++ version 20180303 

由于上面的编译生成是有缺陷的,它跳过了10个生成项目,至于是哪几个,目前就看到一个boost.regex好像有点问题,因为没用到,不确定是不是,只是build记录这门显示,项目实在太多,后面遇到再更新吧。

<think>嗯,用户这次需要的是在CentOS7安装HarfBuzz的具体步骤。从引用内容看,用户之前可能接触过类似软件安装的零散信息(比如引用3提到了harfbuzz,引用2提到了GTK依赖),但需要更系统的指导。注意到用户明确强调“不是真正需求”的引用里包含三个线索:1)centos8的软件包安装记录2)GTK安装时docbook和glib的常见问题3)boost库编译时链接harfbuzz的示例。这说明用户大概率是在进行图形开发环境的搭建,可能涉及字体渲染或文本处理相关开发。用户上一次对话是系统级指令的示例,与本问题无关。当前需求的核心在于:1)CentOS7官方源较旧需要编译安装2)必须解决依赖链3)需要验证安装结果。尤其要注意引用2里提到的glib工具缺失问题——这正是编译安装常见陷阱。准备在回答时重点处理:1)编译安装的标准化流程2)特别标注可能遇到的依赖报错(预先给出解决方案)3)提供测试方法确保用户能验证安装效果。考虑到用户可能不熟悉开发库安装,所有命令参数都需解释作用,比如--prefix=/usr/local的意义。用户没有提具体用途,但从需求看可能是为了运行某些图形程序(如Inkscape)或开发字体相关软件。若后续发现用户有更深层需求,可能需要补充动态链接库配置或更新pkg-config路径等进阶内容。</think> 以下是CentOS 7上完整安装HarfBuzz的步骤(包含编译安装和依赖解决方案): ### 📦 方法一:通过yum安装(简易版) ```bash sudo yum install epel-release sudo yum install harfbuzz harfbuzz-devel ``` > **验证安装**:`pkg-config --modversion harfbuzz` > *优点:快速简单,但仓库版本可能较旧(通常为1.7.5)* ### 🔧 方法二:编译安装最新版(推荐) ```bash # 1. 安装开发工具链 sudo yum groupinstall "Development Tools" sudo yum install git pkgconfig freetype-devel glib2-devel cairo-devel # 2. 解决关键依赖(避坑) sudo yum install libicu-devel graphite2-devel # 文字排版依赖 sudo yum install gtk-doc docbook-utils-pdf # 文档生成依赖[^2] # 3. 编译安装 git clone https://github.com/harfbuzz/harfbuzz cd harfbuzz ./autogen.sh --prefix=/usr/local --with-freetype=yes make -j$(nproc) sudo make install # 4. 更新动态库链接 echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/harfbuzz.conf sudo ldconfig ``` > **验证**:`harf-view --version` ### ⚠️ 常见问题解决 1. **glib-compile-schemas报错** 添加环境变量:`export PATH=$PATH:/usr/local/bin`[^2] 2. **DocBook生成失败** 安装完整文档工具链: ```bash sudo yum install docbook-style-xsl libxslt ``` 3. **链接错误** 编译程序时指定路径: ```bash g++ your_app.cpp -o app $(pkg-config --cflags --libs harfbuzz) -Wl,-rpath=/usr/local/lib ``` ### 🔍 安装结果测试 ```c #include <hb-ft.h> int main() { hb_blob_t *blob = hb_blob_create("test", 4, HB_MEMORY_MODE_DUPLICATE, NULL, NULL); printf("HarfBuzz v%s initialized\n", hb_version_string()); return 0; } ``` > 编译命令:`gcc test.c -lharfbuzz -lfreetype` --- 📌 **注意事项** 1. 编译安装需要1GB+磁盘空间 2. 生产环境建议使用`checkinstall`制作RPM包 3. 若需卸载:`sudo rm -rf /usr/local/lib/libharfbuzz*`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值