系统环境与问题描述
当前运行环境为OpenSUSE 11.2,默认GCC版本为4.4.1。通过RPM手动安装gcc-4.5-19.1.i586.rpm时出现依赖链断裂问题,核心报错如下:
error: Failed dependencies:
gcc45 = 4.5.1_20101208-9.8 is needed by gcc-4.5-19.1.i586
libgomp45 >= 4.5.1 is needed by gcc-4.5-19.1.i586
libstdc++45-devel >= 4.5.1 is needed by gcc-4.5-19.1.i586
官方仓库解决方案
OpenSUSE 11.2官方仓库已停止维护,建议通过以下方式添加历史镜像源:
zypper ar http://download.opensuse.org/distribution/11.2/repo/oss/ suse11.2-oss
zypper ar http://download.opensuse.org/update/11.2/ suse11.2-update
zypper refresh
依赖包批量安装
使用zypper的pattern安装方式可自动解决依赖:
zypper install -t pattern devel_basis
zypper install gcc45 gcc45-c++ libstdc++45-devel
zypper install gcc-4.5 gcc-4.5-c++
编译环境切换配置
建立版本切换符号链接(需root权限):
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 50
update-alternatives --config gcc
update-alternatives --config g++
验证安装结果
执行版本检查命令:
gcc --version
g++ --version
预期输出应包含:
gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]
典型问题处理
若遇到库文件冲突,可强制降级处理:
rpm -Uvh --oldpackage *.rpm
重要开发头文件位置:
/usr/include/c++/4.5/
/usr/lib/gcc/i586-suse-linux/4.5/include/
编译测试案例
创建测试文件test.cpp:
#include <iostream>
int main() {
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
std::cout << "GCC 4.5+ feature check passed\n";
#else
std::cout << "Compiler version too old\n";
#endif
return 0;
}
编译执行:
g++ -std=c++0x test.cpp -o test
./test