Then Notes 隨筆

透過 update-alternatives 切換軟體版本 – 以 gcc/g++ 為例

在 Linux 系統中,為了軟體的相容性或編譯的需求,時常會需要切換使用不同的軟體版本。update-alternatives 是一個在 Debian 及其衍生發行版(例如 Ubuntu)中用來管理與切換軟體版本的工具;而紅帽 Red Hat 家族的 Fedora、RHEL 與 CentOS 對應的指令則為 alternatives

例如,若系統中安裝數個版本的 gcc/g++,我們可以透過

update-alternatives --install <link> <name> <path> <priority>

的方式來指定版本與對應的優先序。筆者習慣將 gcc/g++ 版本號乘以 10 作為優先序,當然您可以自行決定。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 47
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 47

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 49
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 49

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

若要選取版本,則利用以下指令,就可以輸入數字編號來做選擇

$ sudo update-alternatives --config gcc
$ sudo update-alternatives --config g++
There are 4 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path              Priority   Status
------------------------------------------------------------
  0            /usr/bin/gcc-9     90        auto mode
* 1            /usr/bin/gcc-4.7   47        manual mode
  2            /usr/bin/gcc-4.8   48        manual mode
  3            /usr/bin/gcc-4.9   49        manual mode
  4            /usr/bin/gcc-9     90        manual mode

Press <enter> to keep the current choice[*], or type selection number:

如此一來就可以隨心選擇我們所需的 gcc/g++ 版本了。