精华内容
下载资源
问答
  • gcc安装

    万次阅读 2013-06-16 20:20:08
    准备工作 下载并解压gcc源码包 从http://ftp.gnu.org/gnu/gcc 下载一个你想要编译的gcc源码包。...安装所需的库 在使用./configure配置的时候,可能会遇到如下错误: configure: error: Building GCC r

    准备工作

    • 下载并解压gcc源码包

      http://ftp.gnu.org/gnu/gcc 下载一个你想要编译的gcc源码包。 比如下载的是gcc-4.7.2.tar.bz2,然后用输入解压命令 tar -xvf 4.7.2.tar.bz2

    • 安装所需的库

      在使用./configure配置的时候,可能会遇到如下错误: configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.

      这说明需要用到GMP MPFRMPC 这三个库。 传送门:GMP下载MPFR下载MPC下载

      因为MPFR和MPC都依赖于GMP包,所以首先安装GMP。

      $ tar -xvf gmp-5.0.5.tar.bz2

      在Linux下手动编译软件时,要养成建立build目录的好习惯,所以建立一个gmp-5.0.5-build目录

      $ mkdir gmp-5.0.5-build

      $ cd gmp-5.0.5-build

      $./../gmp-5.0.5/configure (可以使用配置参数--prefix=指定安装位置,这里使用默认 /usr/local/include 和/usr/local/lib)

      $make

      $make check (这一步用来确保编译正确)

      $sudo make install

      在执行configure的时候可能会提示错误:checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin

      这就说明我们还要安装m4这个库,传送门:m4

      $ tar -xvf m4-1.4.16.tar.bz2

      $ mkdir m4-1.4.16-build

      $ cd m4-1.4.16-build

      $ ./../m4-1.4.16-build/configure

      $ make

      $ make check

      $ sudo make install

      $ man m4 (如果可以成功man m4,就说明这个库安装成功)

      安装完m4后,我们继续回到之前gmp-5.0.5-build的目录,继续进行configure操作。

      接着安装MPFR这个库

      $ tar -xvf mpfr-3.1.1

      $ mkdir mpfr-3.1.1-build

      $ cd mpfr-3.1.1-build

      $ ./../mpfr-3.1.1/configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib (由于mpfr依赖于gmp这个库,所以在configure时,需要设置好gmp库所在的位置,供安装mpfr库时使用。)

      $ make

      $ make check

      $ sudo make install

      接着安装MPC这个库

      $ tar -xvf mpc-1.0.1

      $ mkdir mpc-1.0.1-build

      $ cd mpc-1.0.1-build

      $ ./../mpc-1.0.1/configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/loca/lib

      $ make

      $ make check

      $ sudo make install

      需要的库都安装完后,为了防止编译gcc时找不到这三个库,所以需要确认库位置是否在环境变量中 LD_LIBRARY_PATH中

      $ echo $LD_LIBRARY_PATH

      如果没有的话,手动添加即可

      $ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"

      为了以后使用的时候不再设置,我们可以修改/etc/bashprofile或者/etc/profile。这里修改的是全局变量,对所有用户有效,修改~/.bashprofile 和~/.profile可以修改用户的全局变量。

      $ sudo vim /etc/profile

      添加以下两句:

      export LD_LIBRARY_PATH=/usr/local/lib

      LD_LIBRARYPATH=:/usr/local/gcc-4.7.2/lib:$LD_LIBRARYPATH

      保存退出

      $ souce /etc/profile

      做完这些准备工作后,就可以开始编译gcc了

    • 构建build目录,开始编译

      $ mkdir gcc-4.7.2-build

      $ cd gcc-4.7.2-build

      接下来要执行configure进行一系列的配置,在[GCC官方网站】(http://gcc.gnu.org/install/configure.html)可以看到一系列的配置。我在编译的时候是参考我机子上原来的配置进行了一点点小改动。

      我在我的终端下使用

      $ gcc -v

      出现了一些列的信息: Target: i686-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5.1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu Thread model: posix gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5.1)

      上面的配置很多,我挑选了几个,最后使用configure配置如下:

      $ ../gcc-4.7.2/configure --prefix=/usr/local/gcc-4.7.2 --enable-threads=posix --disable-checking --enable-languages=c,c++,objc(或者--enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++

      接着执行make

      $ make

      结果遇到错误:gengtype.c:923: undefined reference to `lexer_line'

      按照网上的方法安装一些工具和编译环境: build-essential bison flex

      本来想装个X,用源码安装GCC,没想到又得借助强大的apt-get了 :(

      $ sudo apt-get install build-essential bison flex

      $ make clean (清除下之前没成功编译的文件)

      $ make (继续make)

      又遇到错误:gengtype.c:923: undefined reference to `lexer_line'

      查看build目录下的config.log (查看log真的很有用!),发现问题:conftest.c:10: fatal error: ppl_c.h: No such file or directory

      上网查阅资料,需要安装ppl还有cloog的库.这里有介绍: 传送门

      (= = 原谅我再次使用apt-get)

      $ sudo apt-get install libppl0.10-dev

      $ sudo apt-get install libcloog-ppl-dev

      完了之后:

      $ make distclean (make clean和make distclean的区别可以参考:传送门)

      $ make

      这次终于make好了,没有什么错误。保险起见,再

      $ make check

      结果又有错误: /bin/bash: autogen: 未找到命令

      上网查了下,autogen这个库没装,安之!!

      $ sudo apt-get install autogen

      $ make check

      总算是没什么问题了。接着我们

      $ sudo make install

      这步很快就执行完了。 接者我们用gcc -version 查看,版本还是原来的gcc4.4,并没有gcc4.7.2,这是因为gcc4.7.2的可执行文件还没有加入到搜索命令路径中,所以我们要手动加入。

      -添加新版gcc的可执行文件到命令搜索路径中

      首先用which命令查看使用gcc时,系统调用的是哪个路径下的gcc

      $ which gcc

      $ /usr/bin/gcc (说明gcc命令调用的是这个路径下的gcc)

      为此,我们要使用ln命令,建立一个链接,让 /usr/bin/gcc 指向我们安装目录下的gcc. 因为我之前的/usr/bin/gcc已经指向了gcc4.4,所以,先删除这个链接。

      $ sudo rm /usr/bin/gcc

      然后,进行将gcc使用软链接到gcc4.7.2

      $ sudo ln -s /usr/local/gcc-4.7.2/bin/gcc /usr/bin/gcc

      接着,查看下gcc的版本看看有没有成功!

      $ gcc --version

      $ gcc (GCC) 4.7.2 Copyright © 2012 Free Software Foundation, Inc. 本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保; 包括没有适销性和某一专用目的下的适用性担保。

      成功了!我们在用同样的方法重新链接下g++,就能使用g++4.7.2了!

      $ which g++

      $ /usr/bin/g++

      $ sudo rm /usr/bin/g++

      $ sudo ln -s /usr/loca/gcc-4.7.2/bin/g++ /usr/bin/g++

      $ g++ -version

      $ g++ (GCC) 4.7.2 Copyright © 2012 Free Software Foundation, Inc. 本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保; 包括没有适销性和某一专用目的下的适用性担保。

    • 最后,随便编写一个小程序,使用gcc来测试一下吧!

    另外一篇:

    首先在配置gcc的过程中会出现错误:gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+

    说明要安装gcc需要GMP、MPFR、MPC这三个库,可从ftp://gcc.gnu.org/pub/gcc/infrastructure/下载相应的压缩包。由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库我用的版本分别是gmp4.3.2,mpfr2.4.2和mpc0.8.1。

    先开始安装GMP。解压GMP的压缩包后,得到源代码目录gmp-4.3.2。在该目录的同级目录下建立一个临时的编译目录,这里命名为gmp-build。然后开始配置安装选项,进入gmp-build目录,输入以下命令进行配置:

    ../gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2

    这里--prefix选项代表要将该库安装在哪里,我是装在/usr/local/gmp-4.3.2目录下,后面的安装都会用到这个选项。

    这时在gmp的编译目录下就会生成一个makefile文件,现在开始编译安装。

    make

    make check

    sudo make install

    这样就安装好了gmp。mpfr和mpc的安装方法与此类似。不过要注意配置的时候要把依赖关系选项加进去,具体后面两个库配置命令如下:

    ../mpfr-2.4.2/configure  --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2

    ../mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2

    安装好这三个库之后,就可以正式开始安装gcc了。

    与此前一样,先建一个编译gcc的临时目录gcc-build,进入该目录后配置安装选项:

    ../gcc-4.4.3/configure --prefix=/usr/local/gcc-4.4.3 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1

    gcc的配置选项有很多,具体可以参考gcc源文件目录下的安装说明。这里只安装了c和c++的编译器。(如果不指定编译的语言,则会在make时不通过,爆出某些文件找不到等错误,所以还是建议在此指定编译语言为c,c++)然后开始make编译。为保险起见,需要在环境变量LD_LIBRARY_PATH添加前面三个库的位置,键入以下命令:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib

    然后重新make编译,在经过漫长的1小时等待后,终于编译完成。在安装说明里面还有测试这一步,不过那是可选的。直接make install安装,至此gcc就全部安装完成了。不过目前还不能使用新版本的gcc,因为新版的可执行文件还没加到命令的搜索路径中。在这里我为新版的gcc和g++命令分别建立了一个软链接。进入/usr/bin目录后,键入如下命令建立软链接。

    sudo ln -s /usr/local/gcc-4.4.3/bin/gcc gcc44

    sudo ln -s /usr/local/gcc-4.4.3/bin/g++ g++44

    这样我使用新版本gcc的时候就可以用gcc44和g++44命令,同时也可使用原来的gcc编译程序。当然这里也可以直接将/usr/bin目录下gcc,g++命令重新链接到新版本的gcc可执行文件。在正式使用之前还有最后一个工作要做,就是将前面安装的三个库的路径加进环境变量LD_LIBRARY_PATH中,不然在编译程序的时候会出错。由于我不想每次编译程序都生成环境变量,所以需要编辑/etc目录下的bashrc文件配置shell环境。在这个文件中添加以下语句:

    LD_LIBRARY_PATH=:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.4.3/lib

    export LD_LIBRARY_PATH

    保存重启系统后,就可以使用新装的gcc了。

    以上就是我在CentOS 5.5安装gcc4.4.3的全过程。



    出现问题make的时候提示如下:

    Checking for suffix of object files... configure: error: in `/home/wulei/sourcecode/gcc-4.6.2/i686-pc-linux-gnu/libgcc':

    configure: error: cannot compute suffix of object files: cannot compile

    See `config.log' for more details.

    make[2]: *** [configure-stage1-target-libgcc] 错误 1

    make[2]:正在离开目录 `/home/wulei/sourcecode/gcc-4.6.2'

    make[1]: *** [stage1-bubble] 错误 2

    make[1]:正在离开目录 `/home/wulei/sourcecode/gcc-4.6.2'

    make: *** [all] 错误 2

     

    于是 进入/home/wulei/sourcecode/gcc-4.6.2/i686-pc-linux-gnu/libgcc查看这个路径下的config.log

    发现如下的错误提示:

    /home/wulei/sourcecode/gcc-4.6.2/host-i686-pc-linux-gnu/gcc/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared ob    ject file: No such file or directory

     

    上网查找这个问题

    原因是因为linux在make的时候没有自动寻找新加入的库所以要用命令加入

    LD_LIBRARY_PATH=/usr/local/mpc-0.8.1/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gmp-4.3.2/lib

    echo $LD_LIBRARY_PATH

    export $LD_LIBRARY_PATH



    参考:
    http://www.comdyn.cn/from-web/68-server-setup/164-centos-48-gcc450.html


    我的环境:CentOS 6.2, kernel 3.1.10  x86_64
    需要的配置:Disk space >= 6GB, Mem >= 1GB

    从gcc.gnu.org下载gcc-4.7.2.tar.bz2,创建/root/buid-gcc目录,以后所有编译都在这个目录里进行了。
    ftp://gcc.gnu.org/pub/gcc/infrastructure/处下载以下辅助安装包:gmp-4.3.2.tar.bz2, mpfr-2.4.2.tar.bz2, mpc-0.8.1.tar.gz

    将以上bz2和gz ball全部放到/root/build-gcc目录下。

    1. 编译gmp-4.3.2
    展开gmp-4.3.2.tar.bz2:
    #tar xf gmp-4.3.2.tar.bz2
    #mkdir gmp-build
    #cd gmp-build
    #../gmp-4.3.2/configure --prefix=/root/rpmbuild/gmp-build 
    --build=x86_64-linux
    注意:
    --build=x86_64-linux选项对于x86_64的平台(比如我用的这个系统)非常重要,否则,无法生成Makefile。
    生成Makefile以后,用以下命令编译:
    #make
    #make check
    #make install
    这样就把gmp安装到了
    /root/build-gcc/gmp-build目录,gmp的安装就完成了,/root/build-gcc/gmp-build目录在将来安装其他包的时候会作为参数被传递。

    2. 编译mpfr
    #tar xf mpfr-2.4.2.tar.bz2
    #mkdir mpfr-build
    #cd mpfr-build
    #
    ../mpfr-2.4.2/configure --prefix=/root/build-gcc/mpfr-build/ --with-gmp=/root/build-gcc/gmp-build
    #make
    #make check
    #make install

    3.编译mpc
    #tar xf mpc-0.8.1.tar.gz
    #mkdir mpc-build
    #cd mpc-build
    #../mpc-0.8.1/configure --prefix=/root/build-gcc/mpc-build/ --with-gmp=/root/build-gcc/gmp-build/ --with-mpfr=/root/build-gcc/mpfr-build/
    #make; make check; make install

    4.编译GCC
    #tar xf gcc-4.7.2.tar.bz2
    #mkdir gcc-build
    设置LD_LIBRARY_PATH (可选)
    #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/build-gcc/mpc-build/lib:/root/build-gcc/mpfr-build/lib:/root/build-gcc/gmp-build/lib
    创建makefile
    #../gcc-4.7.2/configure --prefix=/root/build-gcc/gcc-build/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/root/build-gcc/gmp-build/ --with-mpfr=/root/build-gcc/mpfr-build/ --with-mpc=/root/build-gcc/mpc-build/

    Build过程中可能出现的错误:
    有些包没装(虽然之前已经通过命令#
    yum groupinstall "Development Tools" 安装了"Development Tools"),比如ppl和ppl-devel,可能会出现错误:configure: error: cannot compute suffix of object files: cannot compile。查看日志发现错误记录:
    conftest.c:10:19: error: ppl_c.h: No such file or directory
    conftest.c:16: error: 'choke' undeclared (first use in this function)
    conftest.c:16: error: (Each undeclared identifier is reported only once
    conftest.c:16: error: for each function it appears in.)
    conftest.c:16: error: expected ';' before 'me'
    这些错误可以通过命令:
    #yum install ppl ppl-devel
    安装这两个包来改正。

    另外,如果严谨一点, make完后应该要做make -k check的,但是make -k check会报告缺少autogen这个命令,可问题在于CentOS里很难找到这个autogen,所以,马虎点好了,make完后直接make install。

    make install完成后,将会在/root/build-gcc/gcc-build/bin目录下生成最终的可执行文件,如gcc,g++这些。而这时,
    /root/build-gcc/gcc-build/bin并不存在于PATH中。这就需要将新生成的gcc放到/usr/bin中,让其“可用”了:
    #ln -s /root/build-gcc/gcc-build/bin/gcc /usr/bin/gcc-4.7
    #ln -s /root/build-gcc/gcc-build/bin/g++ /usr/bin/g++-4.7
    注意:以上必须用绝对路径!

    其后就可以用gcc-4.7和g++-4.7命令编程序了 
    http://blog.csdn.net/foreverdengwei/article/details/8691181



    参考的资料: http://blog.csdn.net/sstower/article/details/5624010

    http://guliqun1983.blog.163.com/blog/static/50111685201162821716214/

    http://www.cnblogs.com/chuncn/archive/2010/10/15/1851853.html


    原文:http://chenjiajie.org/post/2012-11-25/40042373551




    展开全文
  • VirtualBox Ubuntu增强功能安装gcc 安装

    千次阅读 多人点赞 2018-12-12 16:32:00
    VirtualBox Ubuntu 增强功能安装gcc 安装安装步骤安装遇到的问题1.install the gcc make perl packages2.Unable to lock the administration directory 安装环境 ubuntu-18.04 VirtualBox-5.2.22 安装步骤 1...

    • 安装环境
      • ubuntu-18.04
      • VirtualBox-5.2.22

    安装步骤

    1.点击菜单栏的”设备“–>安装增强功能
    在这里插入图片描述
    2.按照提示进行安装,运行软件
    在这里插入图片描述


    安装遇到的问题

    1.install the gcc make perl packages

    运行增强功能以后出现

    Verifying archive integrity... All good.
    Uncompressing VirtualBox 5.2.12 Guest Additions for Linux........
    VirtualBox Guest Additions installer
    Copying additional installer modules ...
    Installing additional modules ...
    VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.
    This system is currently not set up to build kernel modules.
    Please install the gcc make perl packages from your distribution.
    VirtualBox Guest Additions: Running kernel modules will not be replaced until the system is restarted
    VirtualBox Guest Additions: Starting.
    Press Return to close this window...
    

    在网上查找并且尝试了多种方法,抓耳挠腮一晚上都没办法顺利完成安装。最后在Ubuntu的论坛找到了解答。在terminal中输入以下命令:

    sudo apt-get update
    sudo apt-get install build-essential gcc make perl dkms
    reboot
    

    原文请点击这里

    2.Unable to lock the administration directory

    在安装gcc使用apt-get命令时,遇到了以下小小的问题:

    Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
    Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?
    

    网上查找资料后得到了解决办法,在terminal中输入以下命令:
    //delete the lock file
    //delete the lock file in the cache directory

    sudo rm /var/lib/apt/lists/lock
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    

    原文请点击这里


    最后顺利完成unbuntu增强功能的安装,done~
    在这里插入图片描述
    写博客只是想总结学习过程以及学习过程中的小小问题,以防自己记性不好总是忘了问题怎么解决的,下次遇到同样的问题还得从头来过~~还请大家多多指教鸭!

    展开全文
  • Ubuntu和Debian的gcc安装

    千次阅读 2018-10-21 01:04:14
    Ubuntu安装gcc 安装之前得在获得权限后终端输入 sudo apt-get update 然后输入指令 sudo apt-get install gcc Debian安装gcc debian输入指令不需要像ubuntu一样前面加sudo 获得权限后输入 sudo apt-get ...

    Ubuntu安装gcc
    安装之前得在获得权限后终端输入

    sudo apt-get update
    

    然后输入指令

    sudo apt-get install gcc
    

    Debian安装gcc
    debian输入指令不需要像ubuntu一样前面加sudo

    获得权限后输入

    apt-get update
    
    apt-get install build-essential
    

    要apt-get install gcc下载gcc也行,不过build-essential依赖库已经包含了gcc

    展开全文
  • Ubuntu下gcc安装及使用

    万次阅读 多人点赞 2018-03-08 14:08:19
     Ubuntu下gcc安装及使用 2016年06月21日 10:58:37 29486人阅读 评论(2) 收藏 举报 ...
    
                

    Ubuntu下gcc安装及使用

    29486人阅读 评论(2) 收藏 举报
    分类:
    Ubuntu(6)

    Ubuntu下安装GCC和其他一些Linux系统有点不一样。

    一、安装

    方法一:
    1. sudo apt-get  build-dep  gcc  
    sudo apt-get  build-dep  gcc
    方法二:
    1. sudo apt-get  install  build-essential  
    sudo apt-get  install  build-essential
    安装完了可以执行如下的命令来查看版本,
    1. gcc --version  
    gcc --version
    输出如下:
    1. gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)  
    2. Copyright(C)2007FreeSoftwareFoundation,Inc.  
    gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)
    Copyright(C)2007FreeSoftwareFoundation,Inc.

    二、编译


    编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。

    gcc命令提供了非常多的命令选项。
    一. 常用编译命令选项
    假设源程序文件名为test.c。

    1. 无选项编译链接
    用法:#gcc test.c
    作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

    2. 选项 -o
    用法:#gcc test.c -o test
    作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

    3. 选项 -E
    用法:#gcc -E test.c -o test.i
    作用:将test.c预处理输出test.i文件。

    4. 选项 -S
    用法:#gcc -S test.i 
    作用:将预处理输出文件test.i汇编成test.s文件。

    5. 选项 -c
    用法:#gcc -c test.s
    作用:将汇编输出文件test.s编译输出test.o文件。

    6. 无选项链接
    用法:#gcc test.o -o test
    作用:将编译输出文件test.o链接成最终可执行文件test。

    7. 选项 -O
    用法:#gcc -O1 test.c -o test
    作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

    二. 多源文件的编译方法

    如果有多个源文件,基本上有两种编译方法:
    [假设有两个源文件为test.c和testfun.c]

    1. 多个文件一起编译
    用法:#gcc testfun.c test.c -o test
    作用:将testfun.c和test.c分别编译后链接成test可执行文件。

    2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

    用法:
    #gcc -c testfun.c //将testfun.c编译成testfun.o
    #gcc -c test.c //将test.c编译成test.o
    #gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

    以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

    一、什么是Gcc

    Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

    Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

    二、gcc所遵循的部分约定规则
    前面提到便宜的后缀问题,而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。
    .c为后缀的文件,C语言源代码文件;
    .a为后缀的文件,是由目标文件构成的档案库文件;
    .C或.cc或.cxx为后缀的文件,是C++源代码文件;
    .h为后缀的文件,是程序所包含的头文件;
    .i为后缀的文件,是已经预处理过的C源代码文件;
    .ii为后缀的文件,是已经预处理过的C++源代码文件;
    .m为后缀的文件,是Objective-C源代码文件;
    .o为后缀的文件,是编译后的目标文件;
    .s为后缀的文件,是汇编语言源代码文件;
    .S为后缀的文件,是经过预编译的汇编语言源代码文件。
    三、Gcc的执行过程
    虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。
    ●命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。
    ●接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。
    ●当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。
    四、Gcc的基本用法和选项
    在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数
    Gcc最基本的用法是∶gcc[options] [filenames] ,其中options就是编译器所需要的参数,filenames给出相关的文件名称。
    五、Gcc的参数选项
    -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
    -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
    -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
    -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
    -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
    -Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。
    六、Gcc的安装方法运行环境:VMware? Workstation 7.1.2 build-301548
    Linux版本:Red Hat Enterprise Linux 5.5
    kernel版本:Linux kernel 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:43 EDT 2010 i686 i686 i386 GNU/Linux

    注意:因为wordpress转义的问题:可能会导致下面的--翻译成—,大家在试验的时候不要复制上面的代码
    自己手动敲写,比如prefix,with-gmp,with-mpfr,with-mpc前都是两个 - 

    1.下载gcc-4.6.1安装包
    gcc各版本浏览地址:http://ftp.gnu.org/gnu/gcc/
    gcc-4.6.1浏览地址:http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/
    gcc-4.6.1下载地址:http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.bz2

    2.将gcc-4.6.1.tar.bz2放到/opt文件夹下解压
    [root@rekfan.com ~]# cd /opt
    [root@rekfan.com opt]# tar xjvf gcc-4.6.1.tar.bz2
    3.创建安装目录
    [root@rekfan.com opt]# mkdir /usr/local/gcc-4.6.1/
    4.进入安装目录
    [root@rekfan.com opt]# cd /usr/local/gcc-4.6.1/
    5.配置安装文件
    [root@rekfan.com gcc-4.6.1]# /opt/gcc-4.6.1/configure --prefix=/usr/local/gcc-4.6.1
    (执行源目录 /opt/gcc-4.6.1/中的configure命令,配置将gcc安装到目标目录/usr/local/gcc-4.6.1/下,这里–prefix选项代表要将该库安装在哪里,我是装在/usr/local/gcc-4.6.1目录下,后面的安装都会用到这个选项)

    如果执行这步的时候出现了如下错误:
    ----------------------------------------------------------------------------------
    [root@rekfan.com gcc-4.6.1]# /opt/gcc-4.6.1/configure --prefix=/usr/local/gcc-4.6.1/
    checking build system type… i686-pc-linux-gnu
    checking host system type… i686-pc-linux-gnu
    checking target system type… i686-pc-linux-gnu
    checking for a BSD-compatible install… /usr/bin/install -c
    checking whether ln works… yes
    checking whether ln -s works… yes
    checking for a sed that does not truncate output… /bin/sed
    checking for gawk… gawk
    checking for gcc… no
    checking for cc… no
    checking for cl.exe… no
    configure: error: in `/usr/local/gcc-4.6.1':
    configure: error: no acceptable C compiler found in $PATH

    See `config.log' for more details.
    ----------------------------------------------------------------------------------
    上面错误说明$PATH里没有找到C的编译器
    如果系统有gcc编译器,那就设置下环境变量
    比如:
    export PATH=$PATH:/usr/local/bin
    如果没有找到那么先安装gcc低版本的rpm包
    插入linux软件盘(一般在第一张或第二张),挂载光盘,按下面顺序依次安装:

    [root@rekfan.com opt]# rpm -ivh cpp-4.1.2-48.el5.i386.rpm
    [root@rekfan.com opt]# rpm -ivh kernel-headers-2.6.18-194.el5.i386.rpm
    [root@rekfan.com opt]# rpm -ivh glibc-headers-2.5-49.i386.rpm
    [root@rekfan.com opt]# rpm -ivh glibc-devel-2.5-49.i386.rpm
    [root@rekfan.com opt]# rpm -ivh libgomp-4.4.0-6.el5.i386.rpm
    [root@rekfan.com opt]# rpm -ivh gcc-4.1.2-48.el5.i386.rpm

    重复步骤5,又有新错误了,下面是部分错误代码 !如果没有错误,直接跳到步骤7 !
    ----------------------------------------------------------------------------------
    configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
    Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
    their locations.
    ----------------------------------------------------------------------------------

    错误说明要安装gcc需要GMP、MPFR、MPC这三个库,可从ftp://gcc.gnu.org/pub/gcc/infrastructure/下载相应的压缩包。由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库我用的版本分别是gmp4.3.2,mpfr2.4.2和mpc0.8.1,都放在 /opt文件夹下。
    ①.安装gmp4.3.2
    [root@rekfan.com opt]# tar jxvf gmp-4.3.2.tar.bz2
    [root@rekfan.com opt]# mkdir /usr/local/gmp-4.3.2
    [root@rekfan.com opt]# cd /usr/local/gmp-4.3.2
    [root@rekfan.com gmp-4.3.2]# /opt/gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2
    [root@rekfan.com gmp-4.3.2]# make (编译)
    [root@rekfan.com gmp-4.3.2]# make install (执行安装)
    ②安装mpfr2.4.2
    [root@rekfan.com opt]# tar jxvf mpfr2.4.2.tar.bz2
    [root@rekfan.com opt]# mkdir /usr/local/mpfr-2.4.2
    [root@rekfan.com opt]# cd /usr/local/mpfr-2.4.2
    [root@rekfan.com mpfr-2.4.2]# /opt/mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
    (注意配置的时候要把依赖关系选项加进去)
    [root@rekfan.com mpfr-2.4.2]# make
    [root@rekfan.com mpfr-2.4.2]# make install
    ③安装mpc0.8.1
    [root@rekfan.com opt]# tar jxvf gmpc0.8.1.tar.bz2
    [root@rekfan.com opt]# mkdir /usr/local/mpc-0.8.1
    [root@rekfan.com opt]# cd /usr/local/mpc-0.8.1
    [root@rekfan.com mpc-0.8.1]# /opt/mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2
    [root@rekfan.com mpc-0.8.1]# make
    [root@rekfan.com mpc-0.8.1]# make install
    ④再次安装GCC 配置安装选项
    [root@rekfan.com mpc-0.8.1]# cd /usr/local/gcc-4.6.1
    [root@rekfan.com gcc-4.6.1]# /opt/gcc-4.6.1/configure --prefix=/usr/local/gcc-4.6.1 -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1

    6.编译安装文件
    [root@rekfan.com gcc-4.6.1]# make
    大概需要1个小时左右,喝杯coffee,慢慢等待吧!
    一个小时后···
    第二个错误出现了:

    打开/usr/local/gcc-4.6.1/i686-pc-linux-gnu/libgcc/config.log
    ctrl+f查找error 发现如下错误
    /----------------------------------------------------------------------------------
    /usr/local/gcc-4.6.1/./gcc/cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
    configure:3058: $? = 1
    ----------------------------------------------------------------------------------/
    在网上找到了解决方法,需要添加环境变量LD_LIBRARY_PATH以指出前面三个库的位置,键入以下命令:
    [root@rekfan.com gcc-4.6.1]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib
    再次执行步骤6→
    大概三小时后···
    终于编译成功了,效果图入下:

    7.执行安装gcc
    [root@rekfan.com gcc-4.6.1]# make install
    [root@rekfan.com gcc-4.6.1]# 
    如果不出意外,那么到现在应该安装成功了,不过还是不能使用新版本的gcc,因为新版本的gcc还没有加入命令搜索路径中!
    8.建立软链接
    [root@rekfan.com /]# sudo ln -s /usr/local/gcc-4.6.1/bin/gcc gcc461
    [root@rekfan.com /]# sudo ln -s /usr/local/gcc-4.6.1/bin/g++ g++461
    9.添加环境变量 
    打开/etc目录下的bashrc文件添加如下代码:
    LD_LIBRARY_PATH=:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.6.1/lib

    export LD_LIBRARY_PATH。原文:http://blog.csdn.net/anneqiqi/article/details/51725658


    展开全文
  • linux下gcc安装

    万次阅读 2019-05-28 11:25:22
    1、准备工作 linux一般可以从软件包等方式直接...如果系统还没有任何gcc安装,则需要从开发包中先安装默认的低版本的gcc centos下也可以安装gcc的开发工具:yum groupinstall "Development Tools" 若不先...
  • ubuntu的gcc安装位置在哪里

    千次阅读 2020-07-18 23:32:19
    文章目录ubuntu的gcc安装位置在哪里 ubuntu的gcc安装位置在哪里 我看这篇文章说 添加链接描述 说gcc的啥巴拉巴拉,我就想看看gcc里面真的有cc1这个程序啊 注意是一啊!! /usr/lib/gcc/x86_64-linux-gnu/...
  • Centos下gcc的安装、gcc的更新、gcc安装过程中报错:make[1]: *** [stage1-bubble] 错误 2文章目录:1 下载gcc的源码1.1 源码下载地址:1.2 下载gcc的依赖库包2、解压编译依赖2.1 解压编译依赖gmp-6.1.0.tar.bz22.2 ...
  • Vmware安装Linux-ubuntu版本及GCC安装教程

    千次阅读 多人点赞 2019-09-01 22:22:07
    本文是我在上学期进行操作系统课程时为同学们提供方便写的...Vmware安装Linux-ubuntu版本及GCC安装教程 Ubuntu作为发行最为广泛的linux版本,深受人们喜爱,下面我将讲解如何安装虚拟机Vmware以及在Vmware上配置Linu...
  • 虚拟机中标麒麟操作系统gcc安装

    千次阅读 2019-12-12 18:22:51
    虚拟机中标麒麟操作系统gcc安装欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容...
  • windows gcc 安装

    2018-02-24 11:13:01
    安装gcc需要一个MinGw的工具首先访问http://sourceforge.net/projects/mingw/files/ 直通车点击Download 等待下载即可 下载完成后 运行下载文件点击continue 在安装的过程中需要 选择安装目录默认为C:\MinGW 懒得改...
  • Ubuntu gcc安装编译命令

    千次阅读 2011-04-16 03:57:00
    在向大家详细介绍gcc安装之前,首先让大家了解下Ubuntu gcc,然后全面介绍Ubuntu gcc安装,希望对大家有用。Ubuntu gcc安装及使用是网上查阅后总结的,,可能会相似在Ubuntu gcc安装和其他一些Linux系统有点不...
  • ubuntu gcc 安装 使用

    万次阅读 2018-05-31 09:12:20
    “人多不足以依赖,要生存只有靠自己。” —— 拿破仑 gcc是什么:--------------------------   ...gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器...
  • Solaris下gcc安装

    千次阅读 2009-03-08 17:55:00
    Technorati 标签: Solaris,gcc Solaris下gcc安装 1 查看sun os版本 uname -a的命令查看系统版本。得知是SunOS 5.8。 SunOS 5.8 叫做Solaris 8 SunOS 5.9 叫做Solaris 9,以后就没有5.x的说法了,到Solaris 10了。。。...
  • Centos7之Gcc安装

    万次阅读 2018-01-21 12:40:26
    1下载Gcc包进行安装 https://gcc.gnu.org 下载下来的是一个包文件,但是要进行一系列的编译安装,听麻烦的。  不如直接使用这个yum来从网络上进行安装。 2 yum yum install gcc  yum install gcc-c++
  • Linux - Eclipse CDT + GCC 安装(2014.10.2)

    千次阅读 2014-10-02 10:22:10
    Eclipse CDT + GCC 安装本文地址:
  • 虚拟机这3项选对(选完之后要重启系统) 右键光驱在终端打开 进入光驱里面安装几个rpm包 安装光驱里的rpm包 安装完之后执行命令:gcc -v
  • GCC安装 配置

    千次阅读 2013-04-18 15:40:16
    下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/ 查看Changes: http://gcc.gnu.org/gcc-4.5/changes.htm 现在很多程序员都应用GCC,怎样...
  • gcc 安装详解

    万次阅读 2013-03-08 21:44:59
    对于刚接触linux的人来说安装gcc真不是那么简单的事,尤其是对configure命令不熟悉的那更是一个惨,  以前也有安装顺利的时候,只要 configure、 make、 make install 一切顺利,不顺利的时候,报错:少这个少那个 ...
  • linux下最新版gcc安装

    万次阅读 2018-10-09 21:21:06
    手动编译并安装gcc最新版本 提示:需要先有c编译器,和必要的c++库,否则后面会报错,可以等报错再回头看这里。  安装C编译器  $ yum install gcc //目前使用yum方式只能安装最高为4.8.5版本的  安装c++库 ...
  • arm-linux-gcc安装

    万次阅读 2018-01-23 19:58:18
    网上一大堆arm-linux-gcc下载的网盘和链接都被清理了,并不能用,去gun官网找,找了半天也很麻烦,本人终于安装成功,成果共享。 方法一: 使用如下命令进行arm-linux-gcc安装: sudo apt-get install gcc-arm-...
  • Centos修炼----->Centos7之Gcc安装

    千次阅读 2015-12-27 00:06:06
    Centos7之Gcc安装1下载Gcc包进行安装https://gcc.gnu.org下载下来的是一个包文件,但是要进行一系列的编译安装,听麻烦的。 不如直接使用这个yum来从网络上进行安装。2 yumyum install gcc yum install gcc-c++
  • GCC 安装到自定义目录

    千次阅读 2018-12-27 17:00:57
    tar xzf gcc-4.6.2.tar.gz cd gcc-4.6.2 ./contrib/download_prerequisites cd .. mkdir objdir cd objdir $PWD/../gcc-4.6.2/configure --prefix=$HOME/GCC-4.6.2 --enable-languages=c,c++,fortran,go make...
  • ◆redhat中gcc安装

    千次阅读 2005-10-28 17:26:00
    redhat中gcc安装安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你...
  • gcc安装失败 ---- 教你手动安装成功

    千次阅读 2020-07-28 10:35:17
    gcc手动安装依赖包 ····以下安装非常简单,只要按照图示步骤一步一步就能轻松安装完成···· ps:没安装好虚拟机的》》》虚拟机安装教程 <<<安装须知:<<< 虚拟机版本:VirtualBox-5.2.4-...
  • GCC安装教程

    千次阅读 2009-12-10 00:07:00
    装LINUX下的C语言编译工具GCC,下载了不会装又搜安装方法却都是一种(可能是转载的 错误都一样)说的很笼统,在这里我整理了一下希望刚刚起步的朋友都能用上这款优秀的GNU编程工具。支持一下开源。1.下载GCC 到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,053
精华内容 25,221
关键字:

gcc安装