2019年5月12日日曜日

Ubuntu で g++を5.5から6.5にアップグレードした

(ubuntu16.04)

-std=C++11 って毎回打ちたくない

g++はversion5.5を使っていて、C++97がデフォルトになっていました。いちいち-std=C++11とか入力するのがめんどうだな〜と思い始めたのですが、設定方法も紹介されてないようです。g++をアップグレードすればデフォルトが変わるのでは、ということでアップグレードしました。

https://gcc.gnu.org/projects/cxx-status.html#cxx14
のC++14 Support in GCCのところを見ると、

"This mode is the default in GCC 6.1 and above; it can be explicitly selected with the -std=c++14 command-line flag, or -std=gnu++14 to enable GNU extensions as well."

とのことで、GCC6.1以降ではC++14がデフォルトになっています。(C++11がデフォルトになっているバージョンはないようです)。AtCoderではC++14が標準画面で現れるようになっているし、ちょうどいいかなということでC++14にします。(とはいえAtCoderではGCCは5.4.1を使っているようです)

2019/05時点で、version6の中では6.5が最新でしたのでこれを入れることにします。


GCC 6.5 released [2018-10-26]
https://gcc.gnu.org/

インストールする

https://askubuntu.com/questions/781972/how-can-i-update-gcc-5-3-to-6-1
ここに書いてあるコマンドを一通りやると、バージョン6を入手して6の中の最新まで上げられました。
$ g++ --version

g++ (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt update
$ sudo apt install gcc-6
$ sudo apt install g++-6
(ここでバージョン確認しても上がっていない)
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6    

これが必要です。

$ g++ --version

g++ (Ubuntu 6.5.0-2ubuntu1~16.04) 6.5.0 20181026

6.5まで上がっていることが確認できました。
#include <iostream>
int main()
{
 std::cout << __cplusplus << std::endl;
}
このコードを実行してC++スタンダードを確認すると
201402
と出力されますので、C++14をデフォルトで使っていることが確認できました。

0 件のコメント:

コメントを投稿