Ubuntu下GCC的安装以及版本控制

在Ubuntu下安装GCC和其他一些Linux系统有点不一样。

方法一:

该方法超简单:
sudo apt-get  build-depgcc

就上面这条命令就可以搞定

方法二:
sudo apt-get  install  build-essential

还是简单,一句命令也可以搞定

安装完了可以执行
gcc--version

的命令来查看版本,输出如下:

gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)
Copyright(C)2007FreeSoftwareFoundation,Inc.
方法三:

1.下载GCC源码

  wget ftp://mirrors.kernel.org/gnu/gcc/gcc-4.9.0/gcc-4.9.0.tar.gz

2.解压:

  tar -zxvf gcc-4.9.0.tar.gz

3.下载编译所需依赖项:

  cd gcc-4.9.0                    //进入解包后的gcc文件夹

./contrib/download_prerequisites //下载依赖项

cd … //返回上层目录

4.建立编译输出目录:

  mkdir gcc-build-4.9.0

5.进入输出目录,执行以下命令,并生成makefile文件:

  cd gcc-build-4.9.0

…/gcc-4.9.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

6.编译:

  make -j4

接下来就是等待了,整个过程大约40分钟左右。PS:最好不要在编译过程中再去做别的什么事,整个过程CPU都是满载的,要是莫名终止了,后面麻烦事也不少。

7.安装:

编译结束以后,我们就可以执行安装了:

  make install

8.检查版本:

  gcc --version
  或gcc -v


编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。

gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。

一. 常用编译命令选项
假设源程序文件名为test.c。

1. 无选项编译链接
用法:#gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

2. 选项 -o
用法:#gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

3. 选项 -E
用法:#gcc -E test.c -o test.i
作用:将test.c预处理输出test.i文件。

4. 选项 -S
用法:#gcc -S test.i
作用:将预处理输出文件test.i汇编成test.s文件。

5. 选项 -c
用法:#gcc -c test.s
作用:将汇编输出文件test.s编译输出test.o文件。

6. 无选项链接
用法:#gcc test.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。

7. 选项-O
用法:#gcc -O1 test.c -o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

二. 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c和testfun.c]

1. 多个文件一起编译
用法:#gcc testfun.c test.c -o test
作用:将testfun.c和test.c分别编译后链接成test可执行文件。

2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

用法:
#gcc -c testfun.c //将testfun.c编译成testfun.o
#gcc -c test.c //将test.c编译成test.o
#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

如果你在前后装了两个或者以上版本,有时候gcc -v/-version 会反馈旧的版本。下面将实现gcc各个版本间的选择:

方法是通过设置各个版本的优先级来达到gcc版本的选择;对于要选择使用的版本,可以将它的优先级设置高些;对于不想使用的版本,赋值一个小的优先级号。这样即可实现各个版本间的切换了。具体操作如下:

ubuntu系统使用的gcc版本随着发布版本的不同而不同,在编译android系统时不同的版本推荐用不同的gcc去编译,那么可不可以改变系统的gcc来适应android编译环境的需求呢?答案是可以的。

        先看看我们系统用的gcc和g++是什么版本

1 gcc -v

        可以获得的信息如下

1 gcc version 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)

        如果我们想使用gcc4.5怎么办?首先看看有没有安装gcc4.5,

1 ls /usr/bin/gcc*

        结果只有/usr/bin/gcc  /usr/bin/gcc-4.4两个,那么我们需要安装

1 sudo apt-get install gcc-4.5 gcc-4.5-multilib g++-4.5 g++-4.5-multilib


        安装好后输入以下指令:

1 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
2 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 40


        接着输入:

1 sudo update-alternatives --config gcc


        会看到如下的选项

print?

01 有 3 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
02  
03   选择       路径            优先级  状态
04 ------------------------------------------------------------
05 * 0            /usr/bin/gcc-4.4   50        自动模式
06   1            /usr/bin/gcc-4.4   50        手动模式
07   2            /usr/bin/gcc-4.5   40        手动模式
08   3            /usr/bin/gcc-4.6   30        手动模式
09  
10 要维持当前值[*]请按回车键,或者键入选择的编号:


        要想用哪个gcc就输入编号吧。

        同样也要设置一下g++的

1 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 50
2 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 40

        如果想删除可选项的话可以键入以下指令:

1 sudo update-alternatives --remove gcc /usr/bin/gcc-4.5


        再用gcc -v 来看一下版本是否改变了。

又一个设置gcc版本切换的文章

1、手动切换

设置后,使用时需手动进行切换选择。

root@ubuntu:~# ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root 21 Sep 18 04:42 /usr/bin/gcc -> /etc/alternatives/gcc
-rwxr-xr-x 1 root root 224544 Apr 15 22:58 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 306200 Apr 15 19:45 /usr/bin/gcc-4.6
root@ubuntu:~#update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
root@ubuntu:~#update-alternatives --install /usr/bin/g++ gcc /usr/bin/g++-4.4 50

选择方法(根据编译器选择其一):

root@ubuntu:~#update-alternatives --config gcc
root@ubuntu:~#update-alternatives --config g++

参考选择界面:

root@ubuntu:~# update-alternatives --config g++
There are 2 choices for the alternative g++ (providing /usr/bin/g++).

Selection Path Priority Status

  • 0 /usr/bin/g+±4.4 100 auto mode
    1 /usr/bin/g+±4.4 100 manual mode
    2 /usr/bin/g+±4.6 50 manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/g+±4.6 to provide /usr/bin/g++ (g++) in manual mode.
root@ubuntu:~#

2、设置优先级自动

设置后,系统自动根据优先级选择,假设要设置gcc4.4优先于gcc4.6,设置方法如下:

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

ubuntu系统使用的gcc版本随着发布版本的不同而不同,在编译android系统时不同的版本推荐用不同的gcc去编译,那么可不可以改变系统的gcc来适应android编译环境的需求呢?答案是可以的。

        先看看我们系统用的gcc和g++是什么版本

1 gcc -v

猜你喜欢

转载自blog.csdn.net/daha1314/article/details/84610524