源代码安装gcc4.1.1

      明天实验为:Linux GNU 开发环境建立实验。主要是搭建gcc编译器,在此总结一下搭建过程中遇到的问题和搭建的基本步骤,以免。下面主要的内容来自老师给的《实验说明》,错误通过网络查阅解决。下面的内容中红色为错误内容及其解决方法,蓝色为我成功执行的命令(与实验说明相同的部分不用蓝色标出)。

 

   我们本次实验的内容是下载编译 gcc4.1.1,并且练习由源码编译软件的方法,掌握 gcc
编译器的建立过程。最后验证 gcc4.1.1 是否建立成功。
    编译 gcc4.1.1 的详细步骤如下:
   1.下载
   从 GCC 的 网 站 ( http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/ ) 下 载 文 件
gcc-4.1.1.tar.bz2。本文件的大小是 37.4M,注意别下错了。
   2.解压缩
   用命令tar -xjvf gcc-4.1.1.tar. bz2解压下载文件,解压结束后新生的gcc-4.1.1目录
被称为源目录(用${srcdir}表示)。${srcdir}/INSTALL目录下有GCC安装步骤的详细说明,
我们可用浏览器打开index.html仔细阅读。
   3.建立目标目录
   目标目录(我们在此也称${objdir})与源目录${srcdir}是同级目录,用来存放编译结
果,例如我们建立一个叫gcc-obj的目标目录:
   mkdir gcc-obj
   cd gcc-obj
   以下的操作主要是在目标目录${objdir}下进行。
   4.配置
   该过程是在目标目录${objdir}下进行,配置的目的是决定将GCC编译器安装到什么地方
(我们在此称其${desdir}),支持什么语言以及指定其它一些选项等。注意:${desdir}
不能与${objdir}或${srcdir}目录相同。配置时通过执行${srcdir}下的configure来完成
的,例如下面的命令:
../gcc-4.1.1/configure --prefix=/usr/local/gcc-4.1.1 --
enable-threads --disable-checking --enable--long-long --
host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
   记得在使用上面的命令是用你的真实路径替换${desdir},并且注意格式,哪有空格,哪
没有。上面的命令是将GCC安装在/usr/local/gcc-4.1.1目录下,支持C/C++和JAVA语言,其

它选项参见GCC提供的帮助说明。可以选择不支持java语言,这样能够大量节省编译时间。

 

 在执行上面的命令时遇到的错误有:

这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。

注:若你用的gcc版本较高的话,可能会出现以下错误:

WARNING: `makeinfo' ismissing on your system.  Youshould only need it if
        you modifieda `.texi' or `.texinfo' file, or any other file
        indirectlyaffecting the aspect of themanual.  The spurious
        call mightalso be the consequence of using a buggy `make' (AIX,
        DU,IRIX).  You might want to installthe `Texinfo' package or
        the `GNUmake' package.  Grab either fromany GNU archive site.
make[4]: *** [fastjar.info] 错误1
make[4]: Leaving directory `/usr/src/gcc-4.1.1-build/fastjar'
make[3]: *** [all] 错误 2
make[3]: Leaving directory `/usr/src/gcc-4.1.1-build/fastjar'
make[2]: *** [all-fastjar] 错误 2
make[2]: Leaving directory `/usr/src/gcc-4.1.1-build'
make[1]: *** [all] 错误2
make[1]: Leaving directory `/usr/src/gcc-4.1.1-build'
make: *** [bootstrap] 错误2
  出现此错误的原因是在configure文件中texinfo对该版本不支持可以在configure里找到

以下语句

if ${MAKEINFO} --version"

      | egrep 'texinfo[^0-9]*([1-3][0-9]|4".[4-9]|[5-9])'>/dev/null 2>&1;then

然后将它改为

'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|4\.[1-9][0-9]*|[5-9])'

 

改完后执行make命令又遇到以下问题:

http://www.cnblogs.com/gcc-4.1.1/gcc/java/jcf-io.c:225: warning: implicit declaration of function ‘inflateInit2’
http://www.cnblogs.com/gcc-4.1.1/gcc/java/jcf-io.c:225: error: ‘MAX_WBITS’ undeclared (first use in this function)
http://www.cnblogs.com/gcc-4.1.1/gcc/java/jcf-io.c:226: warning: implicit declaration of function ‘inflate’
http://www.cnblogs.com/gcc-4.1.1/gcc/java/jcf-io.c:226: error: ‘Z_NO_FLUSH’ undeclared (first use in this function)
http://www.cnblogs.com/gcc-4.1.1/gcc/java/jcf-io.c:227: warning: implicit declaration of function ‘inflateEnd’
make[2]: *** [java/jcf-io.o] 错误 1
make[2]:正在离开目录 `/home/wangwei/share/tmp/gcc-obj/gcc'
make[1]: *** [all-gcc] 错误 2
make[1]:正在离开目录 `/home/wangwei/share/tmp/gcc-obj'

make: *** [all] 错误 2

原因很简单是因为--with-system-zlib,当然要你装好 zlib ,特别是 zlib的开发包了,一般是 zlib-devel,删除该条即可。

将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。

 

我的操作系统为ubuntu9.10 真正执行成功所用的命令为:

sudo ../gcc-4.1.1/configure  --prefix=/home/wang/share/tmp/gcc-install/ --enable-threads --disable-checking --enable--long-long  --host=i486-linux-gnu   --enable-language=c,c++,java 

 

 注意:我的${srcdir}/home/wang/share/tmp/gcc-4.1.1;  ${objdir}/home/wang/share/tmp/gcc-obj  ;${desdir}/home/wang/share/tmp/gcc-install/ ;   其中原来的--host=i386-redhat-linux(好像不写也可以但没试过)因为我的版本为i486-linux-gnu故改掉,可以通过gcc -v来查看你的机器是什么版本的。删掉-with-system-zlib。  以上是我成功时所执行的命令,也有人什么也没改成功的。

 

 

 

   5.编译
   make
   这是一个漫长的过程。在P4-1.6的机器上,这个过程大概用了50分钟。
   6.安装
   make install
   执行上面的命令将编译好的库文件等拷贝到${desdir}目录中                      (根据自己设定的路径,       可
能需要管理员的权限)。至此,漫长的GCC-4.1.1安装过程就完成了。
   7.设置
   GCC-4.1.1的所有文件,包括命令文件(如gcc、g++)、库文件等都在${desdir}目录下
存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件
和库文件所在的目录还没有包含在相应的搜索路径内,                        所以必须要作适当的设置之后编译器
才能顺利地找到并使用它们。
   首先是gcc、g++、gcj的设置,要想使用GCC-4.1.1的gcc等命令,简单的方法就是把它的
路径${desdir}/bin放在环境变量PATH中。我们也可以用另外一种符号连接的方式实现,这
样做的好处是我们仍然可以使用系统上原来的旧版本的GCC的编译器。
   我们先察看一下原来gcc所在的路径:
   which gcc
   如果是按照我们前面的试验过程安装成功的话,上述命令会显示:/usr/bin/gcc。我们
再执行以下命令:
   cd /usr/bin
   ln -s ${destdir}/bin/gcc gcc4
   ln -s ${destdir}/bin/g++ g++4
   ln -s ${destdir}/bin/gcj gcj4
   这样,我们就可以分别使用gcc4、g++4、gcj4来调用GCC4.1.1的gcc、g++、gcj完成对C、
C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
   其次是库路径的设置,将${desdir}/lib路径添加到环境变量LD_LIBRARY _PATH中,最好
添加到系统的配置文件中,这样就不必每次都要设置这个环境变量了。
   例如,如果GCC-4.1.1安装在/usr/local/gcc-4.1.1目录下,在RedHat Linux下可以直接
在命令行下执行或者在文件/etc/profile中添加下面一句话:
   setenv LD_LIBRARY_PATH /usr/local/gcc-4.1.1/lib:$LD_LIBRARY_PATH
   8.测试
   安装了这么长时间,         终于迎来我们的第一道曙光,            我们终于可以享用自己的劳动成果了。
我们可以用新的编译命令(gcc4、g++4等)编译自己以前的C、C++程序,或在linux提示符
下键入gcc4 –v,看是否显示我们安装的GCC的版本号4.1.1,来检验我们新安装的GCC编译
器能否正常工作。如果显示如下,说明我们已经劳有所获了:
   使用内建 specs。
   目标:i386-redhat-linux
   配置为:../gcc-4.1.1/configure --prefix=/usr/local/gcc-4.1.1 --enable-threads
--disable-checking --enable--long-long --host=i386-redhat-linux
--with-system-zlib --enable-language=c,c++,java
   线程模型:posix
   gcc 版本4.1.1

   最后我们可以根据需要,删除或保留${objdir}和${srcdir}目录。

 

我机器的显示为:

使用内建 specs。
目标:i486-linux-gnu
配置为:../gcc-4.1.1/configure --prefix=/home/wangwei/share/tmp/gcc-install/ --enable-threads --disable-checking --enable--long-long --host=i486-linux-gnu --enable-language=c,c++,java
线程模型:posix
gcc 版本 4.1.1

你可能感兴趣的:(gcc)