ubuntu11.10 gcc 4.5.3 安装 (CUDA4.1中要求低版本的GCC for 32bit OS)

   everything is here : http://gcc.gnu.org/install/build.html 

  首先,你得记得去把 gmp -> mpfr -> mpc 这些个安装(注意安装顺序)。。 下载地址有官网或者在gnu.org上下载,例如

              ftp://gcc.gnu.org/pub/gcc/infrastructure/

             这三个依赖软件的安装,最简单的步骤就是 

                 $./configure

                 $make

       $make check    <=== very important

       $sudo make install

     其中,对于GMP的安装,其默认安装路径为 /usr/local/lib ,而非之前的 /usr/lib,所以在安装后续的MPFR时,其按照默认的搜索路径进行搜索时就会出问题,导致其 make check 出错。

  缺少什么包 就安装什么。。同时仔细阅读官网提供的手册。。

  之后,关键是那几个configuration :

  • --prefix=/usr/local/gcc-4.5.3    or --prefix=/usr/lib/gcc-4.5.3
  • --enable-threads=posix
  • --enable-languages=c,c++
  • --disable-stage1-checking

   之后就是编译  当前目录为 obj_gcc_4.5.3,  source file set is  ../gcc-4.5.3,则 具体执行时,就

        $../gcc-4.5.3/configure --prefix=/usr/local/gcc-4.5.3  --enable-threads=posix  --enable-languages=c,c++ --disable-stage1-checking 

        $make        //build

        编译过程中出错,报错是fatal error: bits/predefs.h:没有那个文件或目录compilation terminated. ,需要安装包

multilib,  命令为 $sudo apt-get install gcc-multilib

        编译过程中缺少gnu/stubs-32.h:没有那个文件或目录, 需要安装g++-multilib,命令为 $sudo apt-get install g++-multilib, 开始以为如此可以解决问题,但是实际没有,stubs-32.h 存在于/usr/include/i386-linux-gnu/gnu,而编译中寻址则为    /usr/include/gnu   干脆就拷贝过去。。

       再次出现一个问题,ld找不到 crto*.o文件, 建立一个软链接: sudo ln -s i386-linux-gnu/crt*.o .   (dir=/usr/lib)

    

        $make check     //test

        $make install        //install

        $make clean

      在安装完毕后,需要去修改命令搜索路径上的所欲链接的文件。
      修改原来的链接,是个简单的选项。  例如,
      在目录/usr/bin 下,原来是 gcc-> gcc-4.6   g++ -> g++-4.6
       现在需要做的就是 修改为
         gcc ->/usr/local/gcc-4.5.3/bin/gcc
         g++ ->/usr/local/gcc-4.5.3/bin/g++
     ok, enjoy gcc-4.5.3 now !!
    再说一点,之后安装CUDA时遇到种种问题,例如GCC版本依然过高,或者是驱动版本太低,或者是安装CUDA SDK进行编译时,报出经典错误:/usr/bin/ld: cannot find -lcuda , 其实 libcuda.so 在目录  /usr/lib/nvidia-current-updates/libcuda.so.295.20 , 在目录/usr/lib 下建立一个新的软链接链接至此即可。。
   $cd /usr/lib
   $sudo ln -s /usr/lib/nvidia-current-updates/libcuda.so.295.20 libcuda.so 
   费了老大的劲,GCC降低版本,驱动提升版本,同时干掉各种编译问题,好吧,CUDA SDK当中的几十个例程全部编译成功,看着一大片的二进制文件,很开心,然后运行时 傻了眼: 我猛然发现自己的 NVIDIA GPU是 GeForce 7100 GS  属于 GeForce 7 Series,而CUDA MANNUAL 或者维基百科中查的信息均说, CUDA最低是从 GeForce 8 Series 开始支持的。。。我勒个去。。。肏。。。。

posted on 2012-03-23 21:52  馒头山小八路  阅读(1150)  评论(0编辑  收藏  举报

导航