加载中…
个人资料
真的王键
真的王键
  • 博客等级:
  • 博客积分:0
  • 博客访问:51,586
  • 关注人气:8
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

ubuntu下手工切换低版本GCC

(2012-01-12 11:02:20)
分类: 知识

ubuntu下手工切换低版本GCC


转载自:http://blog.csdn.net/zyxlinux888/article/details/6708775

分类: ubuntu 2011-08-22 15:34 181人阅读 评论(0) 收藏 举报
GCC是GNU专属C/C++编译器,因为GCC存在着兼容性的问题,工作时必须用指定版本的gcc才能编译通过,因此我们应该适时的切换到相应的GCC编译器下进行工作。


1.简述:
一般情况下,编译程序都是使用的是:/usr/bin/gcc

其实这个/usr/bin/gcc只是个符号链接,它指向了/etc/alternatives/gcc,而/etc/alternatives/gcc是指向了/usr/bin/gcc-4.4, 我们可以使用ls命令查看:
zyx@zyx:/$ ls /usr/bin/gcc -l
lrwxrwxrwx 1 root root 21 2011-08-22 07:21 /usr/bin/gcc -> /etc/alternatives/gcc
zyx@zyx:/$ ls /etc/alternatives/gcc -l
lrwxrwxrwx 1 root root 16 2011-08-22 07:21 /etc/alternatives/gcc -> /usr/bin/gcc-3.4
zyx@zyx:/$

2.下面我们查看一下GCC的版本:
zyx@zyx:/$ gcc -v
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --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)
zyx@zyx:/$

3.看一下当前安装的GCC的各个版本:
zyx@zyx:/$ ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root     21 2011-08-22 14:43 /usr/bin/gcc -> /etc/alternatives/gcc
-rwxr-xr-x 1 root root  85552 2008-05-08 18:04 /usr/bin/gcc-3.4
-rwxr-xr-x 1 root root 224488 2010-09-28 02:43 /usr/bin/gcc-4.4
lrwxrwxrwx 1 root root      7 2011-07-05 07:38 /usr/bin/gcc.bak -> gcc-4.4
-rwxr-xr-x 1 root root  16090 2008-05-08 17:58 /usr/bin/gccbug-3.4
zyx@zyx:/$

我们看到gcc-3.4.x已经安装了,只要把符号链接(即软连接)指向gcc-3.4就可以了,下面我们用update-alternatives工具来改变符号链接。

1.分别安装gcc-3.4.6和gcc-4.3.2的可选项,使用命令如下:
zyx@zyx:/$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 50
[sudo] password for zyx:
zyx@zyx:/$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 60
zyx@zyx:/$
命令格式:sudo update-alternatives --install <链接> <名称> <路径> <优先级>

2.下面进行GCC编译器的切换,使用命令为:
zyx@zyx:/$ sudo update-alternatives --config gcc

结果是:
zyx@zyx:/$ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path              Priority   Status
------------------------------------------------------------
            /usr/bin/gcc-4.4   60        auto mode
            /usr/bin/gcc-3.4   50        manual mode
* 2            /usr/bin/gcc-4.4   60        manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/gcc-3.4 to provide /usr/bin/gcc (gcc) in manual mode.

我们输入的是1,选择的是gcc-3.4版本的编译器。

3.查看一下切换后的编译器版本:

zyx@zyx:/$ gcc -v
Reading specs from /usr/lib/gcc/i486-linux-gnu/3.4.6/specs
Configured with: ../src/configure -v --enable-languages=c,c++,f77,pascal --prefix=/usr --libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/3.4 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --program-suffix=-3.4 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --with-tune=pentium4 i486-linux-gnu
Thread model: posix
gcc version 3.4.6 (Ubuntu 3.4.6-6ubuntu5)
zyx@zyx:/$


OK!!已经切换过来了。

再介绍一种简单的方法,将编译器版本切换过来:

首先把usr/bin/目录下的gcc文件删除掉或者重命名为gcc.bak。如果不删除的话,你可能会发现你使用ln -s /usr/bin/gcc-3.4 /usr/bin/gcc总是不起作用。
操作如下:

zyx@zyx:/$ sudo mv /usr/bin/gcc /usr/bin/gcc.bak
[sudo] password for zyx:
zyx@zyx:/$ sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
zyx@zyx:/$ gcc -v
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --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)
zyx@zyx:/$

现在已经切换过来了。如果运行ls -la /bin/sh看到链接的是 dash ,则请运行以下命令sudo dpkg-reconfigure dash选择 no 以删除 dash ,编译完成可再运行此命令选择 yes 以重新安装 dash此处如果不改好的话,编译时会出现错误。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有