1. ホーム

cenos upgrade g++ gcc(cc1plus: error: unrecognized command line option "-std=c++11")

2022-02-10 15:05:10
g++」でビルドしています。
mexを使用したエラー
cc1plus: error: unrecognized command line option "-std=c++11"
1. ソースコードのダウンロード
別のバージョンが必要な場合は、バージョン番号を変更するだけで、GCCのウェブサイトをチェックできます。
$ wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz
2. 依存関係パッケージのダウンロードとプレインストール
GCCのコンパイルとインストールには、mpc, mpfr, gmp パッケージの依存関係が必要です。良いことに、GCC のソースコードには依存関係を簡単にダウンロードするためのスクリプトが付属しています。
$ tar zxf gcc-4.8.5.tar.gz
$ cd gcc-4.8.5
$ . /contrib/download_prerequisites

このスクリプトでは、依存パッケージのバージョン番号が順に mpc-0.8.1、mpfr-2.4.2、gmp-4.3.2 であることが確認できます。

3. $ yum -y install glibc-devel.i686 --setopt=protected_multilib=false


4. コンパイルとインストール
$ cd .     //これを行う主な理由は、ビルドフォルダをソースコードの外側に作成するためです。
$ mkdir gcc-build-4.8.5
$ mkdir /usr/local/gcc-4.8.5 // インクルードファイルが配置される。
$ mkdir /usr/local/gcc // bin + lib ファイルが配置されています。
$ cd gcc-build-4.8.5
$ ... /gcc-4.8.5/configure --prefix=/usr/local/gcc-4.8.5 --exec-prefix=/usr/local/gcc --enable-languages=c,c++ //時間節約のため、ここでcとc++だけコンパイルする。
$ make && make install
インストール後に複数のバージョンのGCCがシステム上に存在するのを避けるため、コンパイルとインストールを行うディレクトリを/usr/local/gcc-4.8.5と/usr/local/gccに直接指定します。-prefixを指定しない場合、デフォルトは/usr/localになります。
待機中
後で作る、長い待ち時間、完了
5. 環境変数の設定
gcc/g++の名前を変更し、古いバージョンのままにしておきます。
$ mv /usr/bin/gcc /usr/bin/gcc-4.4.7
$ mv /usr/bin/g++ /usr/bin/g++-4.4.7
$ export PATH=/usr/local/gcc/bin:$PATH # 最新のgcc/g++を使用します。
バージョン番号の確認
$ g++ --バージョン
$ gcc --バージョン
$ which g++
$ どのgcc
エラー
1. Build フォルダが間違った場所に作成された stubs-32.h が見つからない、CentOS は 64 ビットです。
コンパイルは終了しました。
make[5]: *** [_muldi3.o] エラー1
make[5]: ディレクトリ `/home/wei/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/32/libgcc' から退出する。
............
解決方法 32ビットのglibc-develをインストールし、その後に特定のソフトウェアのマルチバージョン問題を無視するための引数を指定します。
$ yum -y install glibc-devel.i686 --setopt=protected_multilib=false
このエラーの主な原因は、新しいビルドフォルダーがソースツリー内にあるため、別のフォルダーを使用する必要があることです。  解決策は、新しいフォルダーがソースコードの外に作成され、解決されたコードがそれに更新されたことです。
第一に、わたしたちは、GCCをソースツリー内に存在しない、ソースとは別のディレクトリにビルドすることを強く推奨します。