MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - GCCのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - GCC
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == CentOSやSUSEのパッケージ管理システムで提供されているGCCのバージョンは古い可能性がある。<br> 最新のGCCでは、C++11からC++17を完全にサポートしており、また、C++20を部分的にサポートしている。<br> また、最新のGCCでは、C11およびC++14のサポートがデフォルトで有効になっている。(-std=c11または-std=c++14を追加する必要はない)<br> <br><br> == 依存関係のライブラリのインストール == まず、システムが最新であることを確認する。<br> # CentOS sudo yum update # SUSE sudo zypper update <br> 以下の依存関係のライブラリをインストールする。<br> # CentOS sudo yum install gmp-devel mpfr-devel libmpc-devel # SUSE sudo zypper install gmp-devel mpfr-devel mpc-devel <br><br> == GCCのインストール == [https://gcc.gnu.org GCCの公式Webサイト]にアクセスして、GCCのソースコードをダウンロードして解凍する。<br> ここでは、ホームディレクトリにインストールを行う。<br> mkdir -p ~/InstallSoftware/GCC/gcc-10_1_0 && cd ~/InstallSoftware/GCC tar zxvf gcc-<バージョン名>.tar.gz -o src <br> 以下のコマンドを実行して、GCCをビルドおよびインストールする。<br> ./configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=$HOME/InstallSoftware/GCC/gcc-10_1_0 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-10.1 make -j 8 make install-strip <br> インストールしたGCCへ環境変数のパスを通す。<br> vi ~/.profile # .profileファイル export export PATH=$HOME/InstallSoftware/GCC/gcc-10_1_0/bin:$PATH export LD_LIBRARY_PATH=$HOME/InstallSoftware/GCC/gcc-10.1.0/lib64:$LD_LIBRARY_PATH <br> 最後に、PCを再起動する。<br> <br><br> == C++14 / C++17のサンプルコード == C++14では、ラムダ式のパラメータのタイプにautoが使用できる。<br> <source lang="c++"> // sample.cpp #include <iostream> int main() { std::cout << [](auto a, auto b) { return a + b; } (5, 6) << std::endl; std::cout << [](auto a, auto b) { return a + b; } (5.23, 6.45) << std::endl; return 0; } </source> <br> # 実行 g++-10.1 -Wall -pedantic sample.cpp -o sample ./sample # 出力 11 11.68 <br> このページの冒頭で述べたように、GCC 10.1は、C++17を完全にサポートしている。<br> 以下の例では、static_assertへのC++17変更の使用例をテストしている。<br> <source lang="c++"> // sample.cpp #include <type_traits> #include <iostream> struct A { int foo; }; struct B { int foo = 0; }; template <typename T> void print(const T& a) { static_assert(std::is_pod<T>::value); std::cout << a.foo << '\n'; } int main() { A x{1}; B y{2}; B z; print<A>(x); print<B>(y); print<B>(z); return 0; } </source> <br> コンパイルを行うには、-std=c++17オプションを付与する。<br> また、上記のコードの17行目と24行目でトリガーされたコンパイルエラーが表示される。<br> # 実行 g++-10.1 -std=c++17 -Wall -pedantic sample.cpp -o sample # 出力 sample.cpp: In instantiation of ‘void print(const T&) [with T = B]’: sample.cpp:24:13: required from here sample.cpp:14:33: error: static assertion failed 17 | static_assert(std::is_pod<T>::value); <br> もし、C++11の構文の詳細に興味がある場合は、Bjarne StroustrupによるC++プログラミング言語を読むことを推奨する。<br> <br><br> __FORCETOC__ [[カテゴリ:CentOS]][[カテゴリ:SUSE]]
インストール - GCC
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse