查看动态库版本
strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'
查找gcc生成的最新动态库
find / -name "libstdc++.so*"
方式一:1、查看当前gcc版本
#默认4.8.5
g++ -v 或者 gcc --version
2、下载gcc源码(10.2.0)
wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
3、解压安装包
tar -xvf gcc-10.2.0.tar.xz
4、下载依赖库
cd gcc-10.2.0
./contrib/download_prerequisites
5、安装系统必须包模块
## 编译常用软件包
yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel gcc kernel-devel libtool libatomic libcurl-devel
6、生成Makefile文件
./configure --prefix=/usr/local/gcc-10.2.0 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib
7、编译
make -j4
8、安装
make install
9、配置libstdc++.so
查看libstdc++.so
find / -name "libstdc++.so*"
步入libstdc++.so配置目录
cd /usr/lib64
#将新的libstdc++.so 拷贝到目录下
cp /usr/local/gcc-10.2.0/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 .
#备份
mv libstdc++.so.6 libstdc++.so.6.old
#创建新软连
ln -sv libstdc++.so.6.0.28 libstdc++.so.6
10、配置环境变量
# 卸载老版本 4.8.5

yum remove gcc gcc-c++
#进入根目录
cd ~
# 编辑当前用户环境变量
vim .bash_profile
# 内容
PATH=$PATH:$HOME/bin:/usr/local/bin/
export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++
#立即生效
source ~/.bash_profile
# 验证
gcc --version
技巧二:
https://mirrors.aliyun.com/centos-vault/7.5.1804/sclo/x86_64/rh/
https://mirrors.aliyun.com/centos/7.9.2009/sclo/x86_64/rh/Packages/d/
CentOS7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必需要升级现有版本或则安装高版本的gcc。红帽虽然早已编译好了高版本的gcc,但未更新到base和epel这两个常用源中,而是将这种版本置于scl中。
##列举GCC版本
yumlist|grepdevtoolset|grepgcc.x86_64
1、安装centos-release-scl
sudo yum install centos-release-scl
2、安装devtoolset,
注意,假如想安装7.版本的,就改成devtoolset-7,以这种推
sudo yum install devtoolset-8*
3、激活对应的devtoolset,
所以你可以一次安装多个版本的devtoolset,须要的时侯用下边这条命令切换到对应的版本
scl enable devtoolset-8 bash
gcc -v
这条激活命令只对本次会话有效,重启会话后还是会变回原先的4.8.5版本查看当前版本centos,要想随便切换可按如下操作
首先LINUX虚机,安装的devtoolset是在/opt/rh目录下的,
每位版本的目录下边都有个enable文件,假如须要启用某个版本,只须要执行
source ./enable
4、直接替换旧的gcc
旧的gcc是运行的/usr/bin/gcc
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
gcc --version
g++ --version
gcc/g++头文件和库文件搜索路径
gcc/g++头文件和库文件搜索路径
一、GNUMake
GNUMake官网
DOC
GNUMake是一个工具,它可以控制从程序的源文件生成可执行文件和其他非源文件。
二、configure配置选项-help
输出帮助信息.虽然是有经验的用户也时常须要使用使用’–help’选项,由于一个复杂的项目会包含附加的选项.诸如,GCC包里的’configure’脚本就包含了容许你控制是否生成和在GCC中使用GNU汇编器的选项.
–prefix=$Home/cdvs_bin_for_arm
这儿是最终生成可执行文件的安装目录也就是exe的储存目录。可以按照自己的须要调整。
libstdc++
libstdc++是GCC对C++StandardLibrary的实现。
libc++是clang的实现。
libsupc++是libstdc++的子集查看当前版本centos,可以在github找到libsupc++,它是libstdc++的一个子文件夹:
libsupc++包含C++最核心的一部份功能,例如:
显存分配:operatornew,operatordelete等
异常处理
run-timetypeinformation(RTTI):dynamic_castlinux命令行,typeinfo类等
初始化列表:定义了templateinitializer_list
…
常见错误:
1、xgcc:fatalerror:cannotexecute‘cc1plus’:execvp:Nosuchfileordirectory
g++ --version
gcc --version
没有版本号的话下载
有的话
运行:
find / -name "cc1plus"
添加到环境变量:
export PATH="$PATH:/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/"
2、/usr/include/gnu/stubs.h:7:11:fatalerror:gnu/stubs-32.h:Nosuchfileordirectory
64位linux提示这个问题
这个问题是因为缺乏32位兼容包,解决办法:
Ubuntu:sudoapt-getinstalllibc6-dev-i386
CentOS:yum-yinstallglibc-devel.i686