Ubuntu-Mac-优雅的切换工具版本

2015/06/30 工具

blog来龙去脉

今天在Ubuntu12.04上编译Android4.0的源码,发现出现了好多重复定义的问题,在网上一搜索发现是使用的gcc的版本不对.我自己的gcc版本是gcc4.6,默认的编译Android4.0 源码的gcc版本是4.4,安装gcc4.4版本之后,就面临着切换gcc版本的问题,比较常见的做法就是自己去修改/usr/bin/gcc的链接位置.比较麻烦,记起以前自己使用的一种比较 简单的方式,可以很容易的进行切换。那就是使用update-alternatives。但是使用了几次之后,都没记住具体的用法,这次索性记录一下。

Ubuntu系统

在linux系统中使用『update-alternatives』的命令进行工具的版本切换,非常的简单。

man update-alternatives

我们在Ubuntu系统中使用

man update-alternatives

之后就可以看到update-alternatives的帮助文件。

Name

update-alternatives - maintain symbolic links determining default commands 
Synopsis

update-alternatives [options] --install link name path priority [--slave link name path]... [--initscript service]a
update-alternatives [options] --remove name path

update-alternatives [options] --set name path

update-alternatives [options] --auto name

update-alternatives [options] --display name

update-alternatives [options] --config name

从上面可以看到update-alternatvaes的作用就是系统默认的符号链接问题

命令的详解

  1. 列出可用的候选命令 update-alternatives –list java
  2. 显示和修改实际指向的候选命令, sudo update-alternatives –config java
  3. 配置系统上所有的候选命令 sudo update-alternatives –all
  4. 显示一个命令链接的所有可选命令 update-alternatives –display editor
  5. 将 <名称> 的主链接切换到自动模式 sudo update-alternatives –auto editor
  6. 在系统中加入一组替换项 sudo update-alternatives –install x-cursor-theme x-cursor-theme /etc/X11/cursors/Gold.theme 70

gcc切换实例

  • 自动切换例子

    通过优先级的方式自动设置gcc的版本

    update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
    update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
    update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
    update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50
    
  • 手动切换例子
    root@ubuntu:~# ls /usr/bin/gcc* -l
    
    lrwxrwxrwx 1 root root 21 Sep 18 04:42 /usr/bin/gcc -> /etc/alternatives/gcc	
    -rwxr-xr-x 1 root root 224544 Apr 15 22:58 /usr/bin/gcc-4.4
    -rwxr-xr-x 1 root root 306200 Apr 15 19:45 /usr/bin/gcc-4.6
    
    root@ubuntu:~#update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
    root@ubuntu:~#update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 50
    

    选择方法(根据编译器选择其一):

    root@ubuntu:~#update-alternatives --config gcc
    root@ubuntu:~#update-alternatives --config g++
    

    然后就会出现如下的界面

    参考选择界面:
    
    01	root@ubuntu:~# update-alternatives --config g++
    02	There are 2 choices for the alternative g++ (providing /usr/bin/g++).
    03	 
    04	  Selection    Path              Priority   Status
    05	------------------------------------------------------------
    06	* 0            /usr/bin/g++-4.4   100       auto mode
    07	  1            /usr/bin/g++-4.4   100       manual mode
    08	  2            /usr/bin/g++-4.6   50        manual mode
    09	 
    10	Press enter to keep the current choice[*], or type selection number: 2
    11	update-alternatives: using /usr/bin/g++-4.6 to provide /usr/bin/g++ (g++) in manual mode.
    12	root@ubuntu:~#
    

Mac系统

既然Ubuntu上有这么方便的工具,进行版本的切换,那么Mac系统上对应的工具是什么呢? 因为我的mac山的软件基本上都是通过brew安装的,所以我查看了一下brew的帮助文件,发现brew自带了版本切换的命令,感觉mac上的软件就是做的好,很贴心。

brew  -switch: switch name version: Symlink all of the specific version of name's install to Homebrew prefix.

用法就是:

brew -switch name version
brew -switch gcc 4.6

Search

    Table of Contents