GCC4.7.2升级到GCC4.8.2
升级原因
在程序中涉及到了 std::string
的 raw 字符串(原始字符串),然后用 GCC 编译程序时出现错误,表示 "R()"
关键字不识别。
代码片段
std::cout << R"(
Hello,
world!
)" << std::endl;
1、 原始字符串示例
std_string.cxx
测试代码如下:
#include <string>
#include <iostream>
int main()
{
//raw字符串,可以多行显示
std::cout << R"(
Hello,
world!
)" << std::endl;
return 0;
}
2、GCC不支持C++11
编译提示错误:
kalami@debian7:~/var/c++$ gcc -o rawstr std_string.cxx
std_string.cxx:7:18: warning: missing terminating " character [enabled by default]
std_string.cxx:7:5: error: missing terminating " character
std_string.cxx:10:21: warning: missing terminating " character [enabled by default]
std_string.cxx:10:20: error: missing terminating " character
std_string.cxx: In function ‘int main()’:
std_string.cxx:7:17: error: ‘R’ was not declared in this scope
std_string.cxx:8:20: error: expected ‘;’ before ‘Hello’
kalami@debian7:~/var/c++$
3、GCC版本
kalami@debian7:~/var/c++$ gcc --version
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 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.
kalami@debian7:~/var/c++$
升级GCC
1、升级目标
将 GCC4.7.2
升级到 GCC4.8.2
,以支持C++11 特性。
GCC支持C++特性参考:C++ Standards Support in GCC - GNU Project
2、升级步骤
①、获取GCC4.8.2源码
获取链接如下:
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2
或
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
按网络速度,自行选择。
kalami@debian7:~/gcc4.8.2$
kalami@debian7:~/gcc4.8.2$ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2
--2024-07-10 09:36:18-- ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2
=> “gcc-4.8.2.tar.bz2”
正在解析主机 gcc.gnu.org (gcc.gnu.org)... 8.43.85.97, 2620:52:3:1:0:246e:9693:128c
正在连接 gcc.gnu.org (gcc.gnu.org)|8.43.85.97|:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==&