Ubuntu 12.04 64bit 下安装编译GCC 4.1.2 绝对原创

1. 下载并解压源码:wget tar jxvf gcc-4.1.2.tar.bz2

2. 安装依赖库及软件:sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo (这一步可以省去)

3. 编译gcc:cd gcc-4.1.2mkdir buildcd build../configure –prefix=/opt/gcc-4.1.2 –program-suffix=-4.1 –libexecdir=/opt/gcc-4.1.2/lib –enable-shared –enable-threads=posix –enable-__cxa_atexit –enable-clocale=gnu –disable-multilib –enable-languages=c,c++

make bootstrap然后是漫长的等待。。。

4. 安装gcc:make installcd /opt/gcc-4.1.2/binls -al看到i686-pc-linux-gnu-gcc-4.1.2等文件就说明安装完成啦。

5. 切换gcc 4.1.2:我一般喜欢在主目录下建立一个bin文件夹,而bin文件夹默认就在PATH中,然后在bin文件夹下链接gcc-4.1来切换gcc的不同版本。cd ~mkdir binln -s /opt/gcc-4.1.2/bin/gcc-4.1 gccln -s /opt/gcc-4.1.2/bin/g++-4.1 g++ln -s /opt/gcc-4.1.2/bin/cpp-4.1 cppln -s /opt/gcc-4.1.2/bin/gcov-4.1 gcovln -s gcc ccln -s g++ c++现在重新登录,输入gcc -v 或 cc -v就可以显示gcc已经变成4.1.2版本啦。

注意编译时遇到的问题小结:

(1)makeinfo的问题

# ./configure

接着就出现错误

WARNING: `makeinfo’ is missing on your system. You should only need it ifyou modified a `.texi’ or `.texinfo’ file, or any other fileindirectly affecting the aspect of the manual. The spuriouscall might also be the consequence of using a buggy `make’ (AIX,DU, IRIX). You might want to install the `Texinfo’ package orthe `GNU make’ package. Grab either from any GNU archive site.make[3]: *** [fastjar.info] 错误 1make[3]:正在离开目录 `/home/ssm/gcc-obj/fastjar’make[2]: *** [all] 错误 2make[2]:正在离开目录 `/home/ssm/gcc-obj/fastjar’make[1]: *** [all-fastjar] 错误 2make[1]:正在离开目录 `/home/ssm/gcc-obj’make: *** [all] 错误 2

(主要原因是GCC的版本过高)

1:全英文的这部分说的是你的系统中缺少相应版本的makeinfo软件。

因为gcc4.1以上的版本需要makeinfo的版本为4.2或更高。所以输入命令行:makeinfo –version 想查看makeinfo的版本。结果得到了以下信息:The program ‘makeinfo’ is currently not installed. You can install it by typing:yum install texinfo按照提示输入命令,,问题得到解决。

2:本机使用的Texinfo是4.11版本,

出现此错误的原因也在于configure文件中texinfo对该版本不支持,可以在解压gcc4.1.1文件夹中的configure文件里找到

以下语句

# For an installed makeinfo, we require it to be from texinfo 4.2 or# higher, else we use the “missing” dummy.if ${MAKEINFO} –version \| egrep ‘texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])’ >/dev/null 2>&1; then:elseMAKEINFO=”$MISSING makeinfo”fi;;

其中4\.[2-9]|[5-9]表示的是支持4.2-4.9之间的几个版本,所以需要自己添加4\.[1-9][0-9]*,以支持4.11版本。即把’texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])’编辑成’texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]*|[5-9])’后保存,编译通过。

cannot find crtisuch file or directory

如果出现该提示错误,说明是64位机子造成的。解决64位的:

人生伟业的建立,不在能知,乃在能行。

Ubuntu 12.04 64bit 下安装编译GCC 4.1.2 绝对原创

相关文章:

你感兴趣的文章:

标签云: