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.
方法三:php

1.下载GCC源码
android

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

2.解压:
c++

  tar -zxvf gcc-4.9.0.tar.gz

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

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

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

  cd ..                           //返回上层目录

4.创建编译输出目录:
ide

  mkdir gcc-build-4.9.0

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

  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.安装:ui

编译结束之后,咱们就能够执行安装了:
url

  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
        会看到以下的选项

 

 

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版本切换的文章

一、手动切换

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

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:~# 

二、设置优先级自动

设置后,系统自动根据优先级选择,假设要设置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
相关文章
相关标签/搜索