Linux下 源码安装GCC

系统环境:Red Hat Enterprise Linux Server release 5.4 (Tikanga)

原有GCC版本: 4.1.2(系统必须自带有GCC,否则无法进行源码安装)

要安装的GCC版本:4.6.2

 
GCC官网
http://gcc.gnu.org/
 
参考文档
http://gcc.gnu.org/install/prerequisites.html   

http://gcc.gnu.org/install/configure.html 

http://gcc.gnu.org/wiki/FAQ#configure

http://gcc.gnu.org/wiki/FAQ#configure_suffix
 
http://advogato.org/person/redi/diary/253.html
 
一、下载
 
    
    
    
    
  1. [root@router ~]# wget http://mirrors-us.seosue.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz 
 
二、安装
    
    
    
    
  1. [root@router ~]# mkdir gcc-tmp           //新建一个gcc临时目录  
  2. [root@router ~]# cd gcc-tmp  
  3. [root@router gcc-tmp]# tar xzf ~/gcc-4.6.2.tar.gz     //解压源码  
  4. [root@router gcc-tmp]#cd gcc-4.6.2  
  5. [root@router gcc-4.6.2]#./contrib/download_prerequisites            
  6.     //下载先决条件软件包,此步非常重要(事关make是否能顺利通过),gcc安装需要许多先决条件  
  7. [root@router gcc-4.6.2]#cd ..  
  8.    
  9. [root@router gcc-tmp]#mkdir gcc-build            
  10.                  //新建一个gcc编译的目录(最好不要和gcc源码相同)  
  11. [root@router gcc-tmp]#cd gcc-build                           
  12. [root@router gcc-build]#../gcc-4.6.2/configure --prefix=/usr/local/gcc-4.6.2 --enable-languages=c,c++    
  13.    //稍等片刻,等待配置完成,配置选项根据自己需要进行添加  
  14. [root@router gcc-build]#make    //这一步时间比较长,要做的只能等待编译完成  
  15. [root@router gcc-build]#make install    //最后进行安装  
 
三、配置
编辑vim /etc/profile,修改PATH变量,添加LD_LIBRARY_PATH变量
 
    
    
    
    
  1. [root@router gcc-build]#vim /etc/profile  
  2. export PATH=/usr/local/gcc-4.6.2/bin:$PATH        
  //把新安装的GCC bin路径放到原有的前面,这样就可以先找到新版本的GCC
    
    
    
    
  1. export LD_LIBRARY_PATH=/usr/local/gcc-4.6.2/lib:$LD_LIBRARY_PATH   
                  //指定新版本GCC库文件路径
    
    
    
    
  1. [root@router gcc-build]#source /etc/profile    
                     
   //使PATH和LD_LIBRARY_PATH变量生效
 
四、编写一个C程序测试
该程序是判断一个数是否是回文数
 
    
    
    
    
  1. [root@router ~]#vim test.c  
  2.    
  3. # include <stdio.h> 
  4. int main(void)  
  5. {  
  6.         int val;  
  7.         int sum = 0;  
  8.         int m;  
  9.         printf("Please Input A Number:");  
  10.         scanf("%d",&val);  
  11.         m = val;  
  12.         while (m)  
  13.         {  
  14.                 sumsum = sum*10 + m%10;  
  15.                 m /= 10;  
  16.         }  
  17.         if (sum == val)  
  18.                 printf("Yes!\n");  
  19.         else  
  20.                 printf("No!\n");  
  21.         return 0;  
  22. }  
保存退出
    
    
    
    
  1. [root@router ~]# gcc test.c      //编译,会生成一个a.out文件  
  2. [root@router ~]# ./a.out          //执行a.out文件  
  3. Please Input A Number:121  
  4. Yes!  
  5. [root@router ~]# ./a.out   
  6. Please Input A Number:123  
  7. No!