web-dev-qa-db-ja.com

PPAからg ++ 4.8をダウンロードしましたが、デフォルトとして設定できませんか?

Ubuntu 12.10でg ++ 4.8をダウンロードしました:

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install g++-4.8

しかし、私がするとき:

Sudo update-alternatives --config g++

g ++バージョンを切り替えるには、次のように表示されます。

update-alternatives: error: no alternatives for g++.

しかし、私がそうするなら:

g++ --version

それは言います:

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

G ++ 4.8インストールをデフォルトのg ++​​に設定するにはどうすればよいですか?

14
user997112

まず、すべてのツールの4.8バイナリがどこにあるかを発見する必要があります。

$ which gcc-4.8
/usr/bin/gcc-4.8
$ which g++-4.8
/usr/bin/g++-4.8
$ ls /usr/bin/*-4.8
/usr/bin/cpp-4.8         /usr/bin/x86_64-linux-gnu-cpp-4.8
/usr/bin/g++-4.8         /usr/bin/x86_64-linux-gnu-g++-4.8
/usr/bin/gcc-4.8         /usr/bin/x86_64-linux-gnu-gcc-4.8
/usr/bin/gcc-ar-4.8      /usr/bin/x86_64-linux-gnu-gcc-ar-4.8
/usr/bin/gcc-nm-4.8      /usr/bin/x86_64-linux-gnu-gcc-nm-4.8
/usr/bin/gcc-ranlib-4.8  /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.8
/usr/bin/gcov-4.8

そのため、すべてのバイナリがあります。そのようなバイナリに対していくつかのシンボリックリンクが利用可能かどうかを確認しましょう。

$ cd /usr/bin
$ ls -l gcc* cpp g++
lrwxrwxrwx 1 root root      7 sep 18 14:02 cpp -> cpp-4.7
lrwxrwxrwx 1 root root      7 abr 22  2013 g++ -> g++-4.7
lrwxrwxrwx 1 root root      7 sep 18 14:02 gcc -> gcc-4.7

ご覧のとおり、cppg++、およびgccのみにシンボリックリンクがあります。ここには2つのオプションがあります。

シンボリックリンク

シンボリックリンクを私たちのものに置き換え、最初に実績を削除します:

Sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++

その後、私たちのものを作成する

Sudo ln -s /usr/bin/cpp-4.8 /usr/bin/cpp
Sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
Sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

元に戻すには、同じコマンドを使用しますが、代わりに4.7または4.6を使用します

Sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++
Sudo ln -s /usr/bin/cpp-4.7 /usr/bin/cpp
Sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
Sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++
10
Braiam

2つのC++コンパイラがあることをupdate-alternativesに知らせ、それぞれにレコードを作成し、使用するコンパイラを設定する必要があります。これは、次を使用して行われます。

Sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6.3 60
Sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40
Sudo update-alternatives --config g++ 

これ以降、コンパイラを切り替えるときに必要なのは次のコマンドのみです。

Sudo update-alternatives --config g++

詳細については、man update-alternativesを参照してください。

ソース: gccの複数のインスタンスの使用方法

16
Radu Rădeanu

これは素晴らしい説明です と、マスターとスレーブ(gccとg ++)の代替を作成および管理する方法を順を追って説明します。

まもなく、それは

Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 
Sudo update-alternatives --config gcc
8
Anton K