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的作用就是系统默认的符号链接问题
命令的详解
- 列出可用的候选命令 update-alternatives –list java
- 显示和修改实际指向的候选命令, sudo update-alternatives –config java
- 配置系统上所有的候选命令 sudo update-alternatives –all
- 显示一个命令链接的所有可选命令 update-alternatives –display editor
- 将 <名称> 的主链接切换到自动模式 sudo update-alternatives –auto editor
- 在系统中加入一组替换项 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