在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

会看到如下的选项

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

最新文章

  1. windows下mysql 主从同步
  2. 实现LUT
  3. verilog 学习笔记
  4. IOS 应用 退出的一个小方法
  5. 安装hadoop多节点 各种整理
  6. Windows phone 8 学习笔记(8) 定位地图导航
  7. 洛谷 [P1169] [ZJOI2007] 最大的正方形
  8. Django--权限信息操作
  9. mysql每组前N条
  10. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
  11. WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)
  12. mybatis sql xml 字符逃脱
  13. 【牛客OI赛制测试赛3】 毒瘤xor
  14. word黑底白字
  15. .NET 定时器类及使用方法
  16. win7硬盘安装方法
  17. spring+quarts常见问题
  18. 机顶盒 gettimeofday()获取毫秒溢出
  19. Axure原型设计介绍
  20. CKEDITOR 3.4.2中 按钮事件中 动态改变图标和title 获取按钮

热门文章

  1. 重金悬赏的微软:提交Win8漏洞以及发布Win8应用
  2. python(6)
  3. [Open Projects Series] ViewPagerTransforms
  4. HIDKomponente使用读写Hid设备一瞥
  5. div 显示滚动条的CSS代码
  6. Eclipse插件-easy-explore-1.0.4
  7. Mechanism of Loading Resources
  8. Java + MongoDB Hello World Example--转载
  9. 多台Linux服务器SSH相互访问无需密码--转
  10. CSS 之 清除 float 常用的方法