在Fedora 38中如何将默认GCC 13替换为自行编译的GCC 12.2?
将Fedora 38默认GCC 13替换为编译安装的GCC 12.2
现状确认
- GCC 12.2已通过源码编译(
make+make install)安装至/usr/local/gcc122目录 - 系统当前默认GCC版本为13.0.1,执行
gcc --version输出:
gcc (GCC) 13.0.1 20230401 (Red Hat 13.0.1-0)
Copyright (C) 2023 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.
/usr/local/gcc122/bin下存在带版本后缀的可执行文件(如gcc122、g++122),执行/usr/local/gcc122/bin/gcc122 --version可确认版本为12.2.0
解决方案
方法1:临时切换(仅当前终端会话生效)
直接修改环境变量,让系统优先加载GCC 12.2的路径:
export PATH=/usr/local/gcc122/bin:$PATH export LD_LIBRARY_PATH=/usr/local/gcc122/lib64:$LD_LIBRARY_PATH
执行后立即验证:
gcc --version # 此时应显示12.2.0版本
方法2:永久全局切换(所有用户生效)
通过profile.d配置文件永久注入环境变量:
- 创建配置文件:
sudo touch /etc/profile.d/gcc122.sh
- 写入以下内容:
export PATH=/usr/local/gcc122/bin:$PATH export LD_LIBRARY_PATH=/usr/local/gcc122/lib64:$LD_LIBRARY_PATH
- 赋予执行权限:
sudo chmod +x /etc/profile.d/gcc122.sh
- 立即生效(无需重启):
source /etc/profile.d/gcc122.sh
方法3:用alternatives管理(推荐,可灵活切换版本)
Fedora自带的alternatives工具可统一管理系统默认软件版本:
- 将GCC 12.2注册到alternatives:
sudo alternatives --install /usr/bin/gcc gcc /usr/local/gcc122/bin/gcc122 100 sudo alternatives --install /usr/bin/g++ g++ /usr/local/gcc122/bin/g++122 100 sudo alternatives --install /usr/bin/c++ c++ /usr/local/gcc122/bin/c++122 100
(最后的100是优先级,数值越高越优先)
2. 选择默认版本:
sudo alternatives --config gcc sudo alternatives --config g++ sudo alternatives --config c++
执行后根据提示输入对应GCC 12.2的编号即可。
3. 验证切换结果:
gcc --version
额外注意事项
- 为确保GCC 12.2的库能被系统正确识别,除了设置
LD_LIBRARY_PATH,还可通过以下方式永久配置:
创建文件/etc/ld.so.conf.d/gcc122.conf,写入:
然后执行:/usr/local/gcc122/lib64sudo ldconfig - 如果仅需在特定项目中使用GCC 12.2,无需修改全局默认,直接调用带后缀的命令(如
gcc122 test.c -o test)即可。
内容的提问来源于stack exchange,提问作者TX77
相关产品推荐
相关产品推荐

