2014-02-01 18:48:29 totuswhf 阅读数 2216


13年的职业生涯中,做了7年半的C++编程,告别了大约5年半了.读本“新书”《C++ Primer英文版(第五版)》(2012年8月第一次印刷),重温下基本概念,再学点C++11的新特性,也是一大享受。

本blog只摘录新版有意思的知识点,以及一段时间不用又会糊涂的点(比如const的各种应用场景),要系统的学习,建议大家看看原书,还是写的很不错滴。

工欲善其事,必先利其器,本人所有的Redhat Enterprise Linux Server 6.4中的gcc版本为4.4.7,对c++ 11的支持还不够好,打算换成4.8.2,要使用对C++ 11的支持,在命令行中需要加上-std=c++0x,在gcc4.7之后也可以使用-std=c++11.

本文主要描述如何安装gcc 4.8.2,主要参考了这篇文章:http://blog.csdn.net/dyllove98/article/details/8917485

 

以下操作均在root用户下.

1.首先下载新版本的GCC到/usr/local/src:

[root@RHVM ~]#cd /usr/local/src

[root@RHVM ~]#wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2

2.下载编译所需依赖库

tar -jxvf gcc-4.8.2.tar.bz2

cd gcc-4.8.2

./contrib/download_prerequisites

3.建立编译输出目录

cd ..

mkdir gcc-build-4.8.2

4.进入此目录,执行以下命令,生成makefile文件

cd  gcc-build-4.8.2

../gcc-4.8.2/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

5.编译

make

如果编译成功,则时间是比较长的,半个小时左右,所以如果你看它一直在输出没有立刻停下来,应该很开心!

6.安装

sudo make install

7.切换GCC到新版

确定新安装的GCC的路径,一般默认在/usr/local/bin下。先updatedb:

[root@RHVM ~]# updatedb

[root@RHVM bin]# ls /usr/local/bin | grep gcc
gcc
gcc-ar
gcc-nm
gcc-ranlib
x86_64-unknown-linux-gnu-gcc
x86_64-unknown-linux-gnu-gcc-4.8.2
x86_64-unknown-linux-gnu-gcc-ar
x86_64-unknown-linux-gnu-gcc-nm
x86_64-unknown-linux-gnu-gcc-ranlib

添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.8.2 40

8.确认当前版本已经切换为新版

gcc -v


我这里用ssh远程的,发现版本没变,断开重练下,重新生成会话后发现变成了4.8.2了!

[root@RHVM ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.8.2/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 4.8.2 (GCC)

 

2015-07-09 12:58:48 majianfei1023 阅读数 13393

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46811159


最近要用到c++ 11,所以没办法只得把那台centos6.6的gcc4.4.7升级一下。

gcc编译器已经出到5.1了,但是我对最新的版本并没有特别大的兴趣,更喜欢稳定性的版本。

gcc4.8.1 是第一个完全支持C++11 的编译器,我这边装的是4.8.2.


一、获取gcc4.8.2包并解压缩:

下载链接:http://gcc.skazkaforyou.com/releases 

里面有gcc所有的版本,自行下载。

也可以选择: wgethttp://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz


然后解压缩: tar -zxvf gcc-4.8.2.tar.gz


二、安装依赖库:
进入gcc-4.8.2目录,执行./contrib/download_prerequisities脚本会自动下载三个依赖库别为gmp-4.3.2mpfr-2.4.2mpc-0.8.1

或者自己手动下载:
ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2
http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz


然后就是机械的安装过程了。


cd gmp
./configure --prefix=/usr
sudo make && make install


cd mpfr
./configure --prefix=/usr
sudo make && make install


cd mpc
./configure --prefix=/usr
sudo make && make install



注:g++ -v 可以看到系统原有的gcc的安装目录 即--prefix变量的值(一般是/user或者/user/local),你自己安装的时候配置跟它一样是最好的了,这样最方便。

如果编译的时候是自定义指定的安装路径,那你就要把lib目录放到ld.so.conf里面并执行ldconfig了。

如果还不行,在编译 gcc 时需要加上下面的选项:
--with-mpc=MPC的安装目录
--with-mpfr=MPFR的安装目录
--with-gmp=GMP的安装目录


三、编译安装GCC4.8.2
./configure --prefix=/usr --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib 
sudo make && make install


gcc的参数配置:
--prefix                  //默认gcc的安装目录,最好跟原有的gcc的安装目录一致
--disable-checking        //生成的编译器在编译过程中不做额外检查,也可以使用--enable-checking=xxx来增加一些检查;
--enable-languages        //指定gcc能编译哪些语言的文件,每种语言用逗号分隔, 例如 c,c++,java

--disable-multilib        //默认gcc能在32位系统上将代码编译成64位程序,或者在64位系统上编译成32位程序,如果加上这个编译选项则表示关闭这个gcc的交叉编译功能。


注:如果你不是装在/usr 或者 /user/local 那么链接到对应的目录下就行了。


四、测试成功

查看gcc -v发现已经成功更新到4.8.2

执行一个示例:

#include <iostream>
#include <vector>
 
int main()
{
	int arr[] = {2,4,6,8,10};
	size_t count=sizeof(arr)/sizeof(arr[0]);
	std::vector<int> vec(arr,arr + count);
	//for (std::vector<int>::iterator iter = vec.begin(); iter != vec.end(); ++iter)
	for (auto iter = vec.begin(); iter != vec.end(); ++iter)
	{
		std::cout<<*iter<<std::endl;
	}
	return 0;
}



g++ cpp11.cpp -o cpp11-std=c++11

如果不加-std=c++11就会编译错误,因为没办法识别auto iter,这是c++11才有的语法。

2016-03-31 12:02:02 chenghuikai 阅读数 1419

安装此软件耗时比较长,所以建议在configure和make时使用screen,这样就不怕断网了

第一步:下载源码包并解压:

下载地址:http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.gz (您也可以在http://ftp.gnu.org/gnu/gcc下找别的相应的版本,下载即可)

解压:tar xf  gcc-4.8.1.tar.gz 

得到目录:gcc-4.8.1

第二步:编译:()

cd gcc-4.8.1

./contrib/download_prerequisites

cd ..

注:编译时需要下载不少东东(此步骤需要网络),速度有点慢,建议使用screen命令,不然断了还得重新来过

如果没有网络连接,那就打开./contrib/download_prerequisites文件,看下里面需要的文件,手动下载完成,然后解压并移动到gcc-4.8.1

./contrib/download_prerequisites打开可以看到,需要装三个软件,如下图:

们把mpfr,gmp,mpc三个软件下载并解压到gcc-4.8.1目录下,解压步骤就不提了^_^

第三步:新建一个目录,用来存放编译的结果

mkdir gcc-build481

第四步:进入到新建目录(gcc-build481),并执行configure命令,开始编译

cd gcc-build481

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

网上说在这一步可能会有个错误:

no acceptable C compiler found in $PATH(解压办法:yum -y install gcc gcc-c++ gdb,本人没有出错,所以不知道方法是否可行)

第五步:开始make

这一个步骤很长,建议使用screen,不然会等很长时间,估计要半个小时吧,

make -j4

--j4是代表开4个线程同时编译

第六步:make install

第七步:安装完成,检查版本:

gcc -v

2018-05-18 17:51:15 aoxuestudy 阅读数 806

linux(Centos)下编译安装gcc4.8.2并调试

前言:

        公司开发环境用linux(Centos),据说gcc4.8.2已经完全支持c++11,所以。。。。。

其实这些都是扯淡,主要是公司强制使用gcc4.8.2,华科,没办法只有硬着头皮使用linux开发环境。

1.首先下载gcc4.8.2
   下载地址:http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/

    想查看这个版本gcc有那些改变,文档:https://gcc.gnu.org/gcc-4.8/



2.编译gcc4.8.2
   (1) 进入你的gcc路径 
        cd /**/**/gcc
   (2)解压gcc包
       tar xzvf gcc-4.8.2.tar.gz
(3)cd gcc-4.8.2

(4)请根据readme.txt提示安装gcc 


(5)执行配置名命令
./configure --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-c99 --enable-long-long --enable-clocale=gnu --disable-libstdcxx-pch --disable-multilib --enable-languages=c,c++ --prefix=$SHAREHOME/tools/$PLATFORM

其中 SHAREHOME是你的cshrc或者bashrc文件里面的环境变量,我是这样设置的


(6)执行命令
        
make –j 8

(7)执行命令
        make install
      接下来是漫长的等待,大概是1个半小时,视自己的机器而定
  (8)验证是否安装完成
           执行命令

           gcc -v


如果失败,多半原因是你的环境变量配置问题

3 测试gcc4.8.2调试
经典的hello world程序测试

main.c  文件



生成可执行文件
$ gcc -o hello.out -g main.c -gdwarf-2 -gstrict-dwarf
运行程序

$ ./hello.out
 图片

4.gcc4.8.2单步调试
   (1) gdb hello.out
  (2)ctrl+x+a        弹出下面界面
(3)r     回车
(4)b main.c:7       定位到main.c文件第7行


(5)n   回车   下一步
(6)p result                打印变量值

game over!!!!!!

2014-04-24 20:25:00 weixin_30538029 阅读数 17

参考一  参考二   参考三   参考四

Ubuntu13.04下编译GCC-4.8.2源码并安装成功

CentOS 6编译安装GCC4.8      CentOS 6.4系统编译安装gcc-4.8.1 实战过程

Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例) 

 下载 gcc-4.8.2.tar.bz2   gmp-6.0.0a.tar.lz  mpc-1.0.2.tar.gz  mpfr-3.1.2.tar.bz2

 

tar jxvf gcc-4.8.2.tar.bz2 &&
tar xvf gmp-6.0.0a.tar -C gcc-4.8.2/. &&
tar zxvf mpc-1.0.2.tar.gz -C gcc-4.8.2/. &&
tar jxvf mpfr-3.1.2.tar.bz2 -C gcc-4.8.2/. &&
cd gcc-4.8.2 &&
ln -s gmp-6.0.0 gmp &&
ln -s mpc-1.0.2/ mpc &&
ln -s mpfr-3.1.2 mpfr &&
cd .. &&
mkdir build &&
cd build 

 

CentOS 6.2 编译:( yum install glibc-static )

../gcc-4.8.2/configure \
        --build=x86_64-redhat-linux \
        --prefix=/usr/local/gcc48 \
        --enable-checking=release \
        --enable-languages=c,c++,fortran \
        --enable-threads=posix \
        --disable-multilib \
        --with-tune=generic \
        --with-arch_32=i686 &&
make -j4 &&
make install &&
ln -s /usr/local/gcc48/bin/gcc /usr/bin/gcc48 &&
ln -s /usr/local/gcc48/bin/g++ /usr/bin/g++48 &&
ln -s /usr/local/gcc48/bin/cpp /usr/bin/cpp48 &&
ln -s /usr/local/gcc48/bin/c++ /usr/bin/c++48 


Debian 7 编译:

(安装debian系统后,使用"apt-get update"命令,使安装源生效。 

( 依赖库和工具: apt-get install build-essential       apt-get install gcc g++ make libc6-dev

../gcc-4.8.2/configure \
        --build=x86_64-linux-gnu \
        --prefix=/usr/local/gcc48 \
        --enable-checking=release \
        --enable-languages=c,c++,fortran \
        --enable-threads=posix \
        --disable-multilib \
        --with-tune=generic \
        --with-arch_32=i686 &&
make -j4 &&
make install &&
ln -s /usr/local/gcc48/bin/gcc /usr/bin/gcc48 &&
ln -s /usr/local/gcc48/bin/g++ /usr/bin/g++48 &&
ln -s /usr/local/gcc48/bin/cpp /usr/bin/cpp48 &&
ln -s /usr/local/gcc48/bin/c++ /usr/bin/c++48 

 

验证是否能够正常工作:参考四

 

其它参考:

###root用户登录

###下载gcc-4.8.1.tar.bz2  gmp-4.3.2.tar.bz2  mpc-0.8.1.tar.gz  mpfr-2.4.2.tar.bz2
tar jxvf gcc-4.8.1.tar.bz2
tar jxvf gmp-4.3.2.tar.bz2  -C gcc-4.8.1/. 
tar zxvf mpc-0.8.1.tar.gz  -C gcc-4.8.1/. 
tar jxvf mpfr-2.4.2.tar.bz2  -C gcc-4.8.1/.
cd gcc-4.8.1
ln -s gmp-4.3.2 gmp 
ln -s mpc-0.8.1/ mpc
ln -s mpfr-2.4.2 mpfr
cd ..
mkdir gcc-build-4.8.1
cd gcc-build-4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
make -j6
##这里的j6就是用6个线程编译,我是8核的服务器,考虑应用的情况,用这个参数,其实可以用满
make install
./x86_64-redhat-linux/libstdc++-v3/src/.libs/
cp libstdc++.so.6.0.18 /usr/lib64/.
mv libstdc++.so.6 libstdc++.so.6.sysback
ln -s libstdc++.so.6.0.18 libstdc++.so.6
##完成

 

posted on 2014-04-24 20:25 谕猛子 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/busor/p/3687297.html

没有更多推荐了,返回首页