Before initiating the download of SimpleSSD-Standalone, ensure that you have a C/C++ compiler installed, which supports both C++11 and the ‘<regex>
’ library. For Windows users, Microsoft Visual C++ 2015 (MSVC 2015) or a more recent version will suffice. If you are using a Linux system, you should have gcc/g++ version 4.9 or newer installed.
如题,安装SimpleSSD-Standalone要求Centos7中gcc版本大于4.9,但Centos7中默认gcc版本为4.8.5,故需要重新安装更高版本
一、建议选择更高版本的gcc安装,gcc5.4.0仍然会出现不支持c++11的情况
二、步骤:
1.下载gcc-7.3.0
cd /usr/local/src
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
2.解压&进入目录
tar -xf gcc-7.3.0.tar.gz
cd gcc-7.3.0
./contrib/download_prerequisites
3.建立一个文件夹存放编译文件
mkdir gcc-build-7.3.0
cd gcc-build-7.3.0
4.配置
参数解释:
–enable-checking=release 增加一些检查,也可以–disable-checking生成的编译器在编译过程中不做额外检查
–enable-languages=c,c++ 你要让你的gcc支持的编程语言
–disable-multilib 取消多目标库编译(取消32位库编译)
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
5.编译(比较耗时)
make
6.安装
sudo make install
7.查看版本
gcc - v
8.查找编译 gcc 时生成的最新动态库
find / -name "libstdc++.so*"
9.将找到的动态库 libstdc++.so.6.0.21 复制到/usr/lib64
cp /usr/local/src/gcc-5.4.0/gcc-build-5.4.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
10.切换工作目录至/usr/lib64,删除原来的软连接, 将默认库的软连接指向最新动态库。
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6
11.最后,需要把原来的GCC卸载,换成7.3.0版本的
找到已安装的gcc和gcc-c++包
rpm -q gcc
rpm -q gcc-c++
删除已经安装低版本
rpm -e [包名]
包名为上一步中显示的包,形如:
gcc-4.8.5-16.el7_4.2.x86_64
gcc-c++-4.8.5-16.el7_4.2.x86_64
那就删除吧
rpm -e gcc-4.8.5-16.el7_4.2.x86_64
rpm -e gcc-c++-4.8.5-16.el7_4.2.x86_64
在运行rpm -e gcc-4.8.5-16.el7_4.2.x86_64命令时会出现报错:
[root@localhost z**b]# rpm -e gcc-4.8.5-44.el7.x86_64
error: Failed dependencies:
gcc = 4.8.5-44.el7 is needed by (installed) libquadmath-devel-4.8.5-44.el7.x86_64
gcc is needed by (installed) systemtap-devel-4.0-13.el7.x86_64
gcc = 4.8.5 is needed by (installed) libtool-2.4.2-22.el7_3.x86_64
gcc = 4.8.5-44.el7 is needed by (installed) gcc-gfortran-4.8.5-44.el7.x86_64
说明卸载旧版本的 GCC 可能会导致一些依赖关系问题,因为其他已安装的软件可能依赖于旧版本的 GCC,所以rpm -e gcc-4.8.5-16.el7_4.2.x86_64命令可以不执行,而只使用rpm -e gcc-c++-4.8.5-16.el7_4.2.x86_64命令删除gcc-c++-4.8.5-16.el7_4.2.x86_64包。
三、安装完成后安装simplessd standalone环境时运行到下面的指令
cmake -DDEBUG_BUILD=off .
仍然出现报错,
Make Error at CMakeLists.txt:67 (message):
GNU g++ < 4.9 does not support <regex>.Please update your compiler.
-- Configuring incomplete, errors occurred!
See also "/home/zhourb/simplessd-standalone/CMakeFiles/CMakeOutput.log".
为了解决这个问题,你可以尝试以下步骤:
1.清理 CMake 缓存:首先尝试清理 CMake 缓存,以确保它不会使用旧的配置。在你的项目目录中运行以下命令
rm -rf CMakeFiles CMakeCache.txt
2.检查 PATH 环境变量: 首先,确保新版本的 GCC 所在的目录在 PATH 环境变量中。你已经提到你的 GCC 安装在 /usr/local/bin
,你可以运行以下命令来确认:
echo $PATH
确保 /usr/local/bin
在 PATH 中,并且在旧版本之前。如果不在,你可以将其添加到 PATH:
export PATH=/usr/local/bin:$PATH
3.检查 CMake 的搜索路径: 确保 CMake 可以找到新版本的 g++。你可以尝试使用 -DCMAKE_CXX_COMPILER
参数明确指定 CMake 使用的 C++ 编译器,如下所示:
cmake -DDEBUG_BUILD=off -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ .
4.检查 CMake 版本: 确保你正在使用支持 C++11 的 CMake 版本。你可以运行以下命令来检查 CMake 版本:
cmake --version
最后问题解决。
参考以下文章,不胜感激。