GCC安装
来源:互联网 发布:京东的域名花了多少钱 编辑:程序博客网 时间:2024/06/11 14:17
一、GCC的作用和运行机制
GCC是Linux下重要的编译工具,用法这里就不说了,满大街都找得到。这里我重点介绍GCC的运作机制,作为代码分析的铺垫。全篇使用C语言子部件来作分析,因为我对其他语言的编译没有研究。
根据编译原理,语言的编译分为这么几个步骤:词法分析、语法分析、语义分析、中间语言生成、优化、目标代码生成等。然而从编译器使用的角度来看,要把源代码翻译为可执行文件要经过编译和连接两步,与此对应,一个完整的编译系统一定包含编译器和连接器两大功能部件。编译器要完成编译原理中提到的那些任务;连接器要把编译器生成的代码片段拼接成一个完整的可执行程序。之所以需要连接器,是因为一般的程序都是多源文件的,而编译器一次只编译一个源文件(称之为翻译单元translation unit),因此需要连接器把所有翻译单元对应的输出合并成一个可执行文件。
如果一切顺利,可执行程序就可以正确的生成出来。但是一旦源代码存在某些问题,错误就会被报告出来。编译器报告的错误一般都是局部错误,它会指明错误在哪个文件第几行;连接器报告的错误一般都是全局错误,而且绝大多数都是多胳膊少腿的问题,比如函数重定义,无法解决的外部符号等,这些错误无法定位到某一行。
GCC就是这里的编译器。并且GCC的生成结果并不是一般人所认为的对象文件(.o),而是文本格式的汇编代码!将汇编代码转换为二进制指令的工作由AS完成,生成大家都很熟悉的对象文件(.o);生成的这些对象文件再由AR程序打包成静态库(.a),或者由LD程序连接成可执行程序(elf、.so或其他格式)。而LD就是所谓的连接器。AS、AR、LD是属于另外一个叫做binutils的软件包的程序,所以要让GCC能够有效运作起来,除了在系统中安装GCC外,还要安装binutils才行。
以下是gcc、as、ld各司其责的配合完成一个编译过程。
- gcc test.c -S -o test.S
- as test.S -o test.o
- ld test.o -o test
二、GCC的安装
要学习和修改GCC源码,首先第一步是在自己的机器上用GCC源代码编译出一个选定版本的GCC(这里以gcc-4.5.2.tar.bz2为例,源码可以从http://gcc.gnu.org去下载)。除此之外,GCC依赖于gmp、mpfr、mpc三个库,如果你机器上没有,或者版本太老以至于无法支持新的GCC,那么你还得去把这三个库下载下来。
一般来说,下载GCC是从GNU的FTP镜像网站去下载,gcc的代码包一般放置在/release/gcc-x.y目录下,而那三个依赖库一般放置在/infrastructure/目录下。
1、把依赖库和GCC解包
- tar -vjxf gmp-4.3.2.tar.bz2 -C /usr/src/
- tar -vjxf mpfr-2.4.2.tar.bz2 -C /usr/src/
- tar -vxf mpc-0.8.1.tar.gz -C /usr/src/
- tar -vjxf gcc-4.5.2.tar.bz2 -C /usr/src/
2、到自己的home目录下编译依赖库
- cd ~
- mkdir gmp-build
- cd gmp-build
- /usr/src/gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2 #指定安装位置
- make
- make check
- make install
- cd ~
- mkdir mpfr-build
- cd mpfr-build
- /usr/src/mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
- make
- make check
- make install
- cd ~
- mkdir mpc-build
- cd mpfr-build
- /usr/src/mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
- make
- make check
- make install
3、编译GCC
- cd ~
- mkdir gcc-build
- cd gcc-build
- /usr/src/gcc-4.5.2/configure --prefix=/usr/local/gcc-4.5.2 --with-mpc=/usr/local/mpc-0.8.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2 --enable-languages=c,c++
- make
- make install
漫长等待过后GCC就被安装到/usr/local/gcc-4.5.2目录下了,然后ln -s /usr/local/gcc-4.5.2/bin/gcc /usr/local/bin/gcc,最后gcc -v看看,版本号是不是换了?
转自:http://blog.csdn.net/sonicling/article/details/6702031
参考:http://www.linuxdiyf.com/viewarticle.php?id=91486
http://linux5588.blog.51cto.com/65280/794251
http://hi.baidu.com/lgh_boffin/blog/item/d4d95def8f3e4132acafd5d5.html
http://hi.baidu.com/sakurac/blog/item/d9f5f58f5b51cfedf01f3650.html
http://gcc.gnu.org/onlinedocs/gccint/
资源下载地址:ftp://gcc.gnu.org/pub/gcc/infrastructure/
- GCC、GCC-C++安装
- 安装 gcc
- gcc安装
- gcc安装
- GCC 安装
- GCC 安装
- 安装GCC
- GCC安装
- 安装GCC
- gcc安装
- gcc安装
- 安装gcc
- GCC安装
- GCC 安装
- 安装gcc
- 安装gcc
- GCC安装
- 安装gcc
- Linux 启动过程详解
- VMware虚拟机安装RedHat Linux9.0 无法上网 解决方法
- [嵌入式Linux应用开发完全手册][韦东山]讲解MMU的时候,构造段描述符地址的语句是否有误
- 关于ark取得进程的镜像文件路径
- 一道练习题引申出来的知识点(一) 文件以及文件流的操作
- GCC安装
- 程序员,你真的懂得收发电子邮件吗?
- ARM 8位位图 常数说明
- SDRAM 的工作原理
- 如何在Linux下安装Qt
- 如何启动vsftp服务
- S3C2440 FLASH 介绍
- 使用php发起多线程cc请求
- ARM中常用英文缩写解释