私は2番目の最新のgccと最新のbinutilsを取得し、Debianシステムでクロスコンパイラを作成しようとしました。何らかの理由でGCCはコンパイルに失敗します。
make[2]: Leaving directory `/home/dylan/Documents/cross/gcc-build/fixincludes'
Configuring in ./gmp
configure: error: invalid feature name: libstdc++-v3
make[1]: *** [configure-gmp] Error 1
make[1]: Leaving directory `/home/dylan/Documents/cross/gcc-build'
make: *** [all] Error 2
次の構成を使用します。
../gcc-4.9.0/configure \
--target=$TARGET \
--prefix=$PREFIX \
--with-sysroot=/mnt \
--with-newlib \
--without-headers \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libitm \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
--disable-libcilkrts \
--disable-libstdc++-v3 \
--enable-languages=c,c++
Linux From Scratchでバージョンチェックを実行して、次のような結果を得ました。
bash, version 4.2.37(1)-release
/bin/sh -> /bin/bash
Binutils: (GNU Binutils for Debian) 2.22
bison (GNU Bison) 2.5
/usr/bin/yacc -> /usr/bin/bison.yacc
bzip2, Version 1.0.6, 6-Sept-2010.
Coreutils: 8.13
diff (GNU diffutils) 3.2
find (GNU findutils) 4.4.2
GNU Awk 4.0.1
/usr/bin/awk -> /usr/bin/gawk
gcc (Debian 4.7.2-5) 4.7.2
GNU C Library (Debian EGLIBC 2.13-38+deb7u4) stable release version 2.13
grep (GNU grep) 2.12
gzip 1.5
Linux version 3.2.0-4-amd64 ([email protected]) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.60-1+deb7u3
m4 (GNU M4) 1.4.16
GNU Make 3.81
patch 2.6.1
Perl version='5.14.2';
GNU sed version 4.2.1
tar (GNU tar) 1.26
Texinfo: makeinfo (GNU texinfo) 4.13
xz (XZ Utils) 5.1.0alpha
Compilation OK
Googleで見たのでバグではないようですが、私が見たこれらの修正とヒントは私の問題ではありません。 C++ ライブラリは無効になっていないようです。
答え1
私は同じ問題を抱えており、混乱しています。手がかりはエラー行にあります。
configure: error: invalid feature name: libstdc++-v3
make[1]: *** [configure-gmp] Error 1
明らかにconfigure-gmp
(makeの)ターゲットは親プロジェクトから渡された関数名です。
秘密は、コマンドラインに次のようにスペルを入力することです。
--disable-libstdc__-v3
まあ。そうですね。プラス記号の代わりに下線を使用してください。
気づく:GCC 5.1の出力に基づいて./configure --help
可能です。--disable-libstdcxx
オプションも同じ効果があります。しかし、これがいつ導入されたかは確かではなく、確認したこともありません。
自発的に読んでください;)
これは私の理論に基づいています。このバグレポートGCCトラッカーから。
私のようなコマンドラインは、GCCソースツリーにすでにリンクされているGMPを使用しているか、スクリプトがcontrib/download_prerequisites
GCC tarball(私が使用した方法)からダウンロードされたことを示します。これはシンボリックリンクを実行します。
今はこんな状況だと仮定してみよう。記載されているようにこのドキュメントページからGMP、MPFR、MPCはGCCの前提条件です。よりWikiページセクションサポートライブラリこれは「組み込み」方法の詳細な説明です。
gmp-4.3.2
上記のスクリプトは、GNU FTPサーバーからダウンロードできるようにハードコードされています(GCC 5.1に準拠)。
奇妙なことに4.3.2が言及されています。旧バージョンページバージョン 4.3.1 の範囲内:
GMP 4.3.1関連の問題(上記の4.3.2に関する情報も参照):
ただし、実際には独自のリストを取得できません(日付/時間もありません)。
GCCトラッカーのバグレポートでは、Ralfは次のように述べました。
このエラーは、現在の引数なしで --enable/--disable/--with/-- の英数字、マイナス記号、ドット、またはアンダースコア以外の文字を受け入れない引数を解析する Autoconf コードで発生します。私はこれがAutoconfで修正されるべきだと思います。
しかし、configure.acにもバグがあります。これを修正したら、次のものを使用できます。
--disable-libstdc__-v3
(つまり、プラス記号をアンダースコアに変換します。)GCCが固定のAutoconfバージョンに切り替えられると、プラススイッチは不要になります。
これで、パッケージマネージャのコンピュータで利用可能なAutoconfバージョンを使用してパッケージを準備しました。そして我々は比較的古いバージョンのGMPを使用しており、configure
GMPタールボール内で生成されたスクリプトは上記のチケットでRalfが指摘した欠陥が発生しやすいです。
したがって、依存関係が必要なものよりも少し速いので、この愚かな間違いを修正する必要があります。