Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2476253
  • 博文数量: 293
  • 博客积分: 2660
  • 博客等级: 少校
  • 技术积分: 3632
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 17:50
文章分类

全部博文(293)

文章存档

2015年(13)

2014年(58)

2013年(73)

2012年(25)

2011年(30)

2010年(86)

2009年(8)

分类: LINUX

2014-06-12 18:46:20

http://blog.csdn.net/oldmtn/article/details/8589692
1.获取代码及新建目录
1.1下载

我是通过下载的。
1.2解压
$ tar xvjf gcc-4.1.2.tar.bz2

在ubuntu12.04自带了解压缩软件,可以直接通过右键菜单就可以解压。

1.3 建立目录

假设你解压到的目录为:  ~/home/hwh/gcc-4.2.3,那么我们就用${srcdir}表示它。

我们同时需要建立一个目标目录${objdir}用来存放编译结果的地方,GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。我们这里在建立一个objdir为: ~/home/hwh/gcc-4.2.3obj

同时我们还需要建立一个安装目录,就是防止编译后的头文件,库文件,和可执行文件。

一般为/usr/local/gcc-4.2.3

命令:


最终我们有3个目录



${srcdir}             ~/home/hwh/gcc-4.2.3                          源代码解压后的目录

${objdir}             ~/home/hwh/gcc-4.2.3obj                    自己新建的用于存放编译结果的目录,以后的操作都在这个目录里面

${destdir}          /usr/local/gcc-4.2.3                                用来安装编译结果的目录

3. 安装依赖库及相关软件

$ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo

这个需要根据里面的要求下载依赖库。

上面我安装了常规需要依赖的库。

4. 为头文件以及所需库添加链接

添加如下链接, 这取决于你的 Ubuntu 系统架构, 如果你使用的是64位的ubuntu系统应当使用x86_64-linux-gnu替代i386-linux-gnu

[这里需要了解一下ln -s 的语法:



sudo ln -s 源文件 目标文件

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,
我们只要在某个固定的目录放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁
盘空间。

具体大家可以谷哥或度娘,但是提供一个地址供参考:http://blog.chinaunix.net/uid-26942706-id-3207669.html

]

5. 配置

配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。

配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):

命令格式为:

但是其他选项如此多,怎么办?



我参考了系统自带gcc-4.6.3的编译参数(使用gcc -v查看),然后将不相关的配置选项都删除了。

 最终我的配置为:


6. 编译

命令:

这是一个漫长的过程,并且可能出现N多错误,不要怕,有谷哥和度娘呢。



晚上每个人编译的错误情况都不相同,我就将我所遇到的错误及解决办法帖出来,供大家参考。

问题:
a. 错误码:"java/jcf-io.c: cann't find zlib.h"?
[Method]: 将/gcc-4.2.3/gcc/java下的jcf-io.c中的#include "zlib.h"
修改为#include "../../zlib/zlib.h"

b. 错误码:"/usr/bin/ld: cannot find -lz"?
[Method]: 安装zlib-dev这个包,在线安装命令为:apt-get install zlib1g-dev。

c. 错误码:"xgcc: java/parse-scan.c: No such file or directory"?
[Method]:
<1>安装bison: sudo apt-get install bison
<2>进入gcc-4.2.3/gcc/java目录,因该目录有parse-scan.y
执行bison -t -o parse-scan.c parse-scan.y

d.错误码:"/.libs/libgcj.so: undefined reference to `__cxa_call_unexpected' collect2: ld returned 1 exit status"


替换 libjava/prims.cc这个文件

7. 安装

安装很简单:


8.替换系统自带gcc-4.6.3为我们新编译的gcc-4.2.3

知识储备:GCC 4.6.3的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。

8.1查看原来gcc所在路径

原来的gcc命令在/usr/bin目录下。因此我们可以把GCC 4.6.3中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:



(这里你可以根据你的需要链接gcc, g++, gcj)

上述含义就是将gcc链接到gcc-4.2中。


9. 测试

使用gcc -v检查版本应该为gcc-4.2.3了。

阅读(1501) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~