web-dev-qa-db-ja.com

14.04.01 32ビット:クロスコンパイル時にg ++ 64ビットインクルードファイルがありません

そのため、32ビットのXubuntu 14.04.1がインストールされています。サポートしているさまざまなプラットフォームのSOとWindows DLLをリリースする予定のインターフェイスコードがあります。 (はい、私は知っています、バイナリリリースは悪いですが、ここでも関係ありません。)

-m32/-m64 gcc/g ++引数を使用して、32ビット14.04.01で32ビットおよび64ビットSOを構築しようとしています。 32ビットバージョンは正常に動作しますが、64ビットバージョンは失敗します。

/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory

インクルードをチェックインすると、そのファイルは32ビットでは真に存在しますが、64ビットでは存在しません。

問題をグーグルで調べてみると、これは過去にGCC/G ++ 4.6で発生したようですが、修正済みとしてマークされています。しかし、14.04.1はGCC/G ++ 4.8を使用しています。これは、GCC/G ++ 4.8のこれらのライブラリにリグレッションがあったことを示唆しています。これは他の誰かが見たものですか?

必要に応じて、64ビット14.04.1に新しいVMをセットアップし、適切なライブラリバージョンが選択されるかどうかを確認できます。ただし、可能な場合は、むしろ再インストールする必要がある他の多くのものがあるので、できません。より良い解決策はありますか?そして、64ビット14.04.1をインストールした場合、他の方向のヘッダーが欠落することなく、確実にクロスコンパイルして32ビットに戻すことができますか?

8
Graham

64ビットのbits/c ++ config.hファイルは、g++-multilibパッケージをインストールすることで32ビットシステム(およびその逆)で提供されます。そのため、Software Center、Synaptic、または端末を使用して

Sudo apt-get install g++-multilib

これは、デフォルトのgcc/g ++バージョンのg++-4.8-multilibに解決される単なる依存パッケージであり、順番にlib64stdc++-4.8-dev(32ビットの64ビットコンパイル)またはlibx32stdc++-4.8-dev(32 64ビットでのビットコンパイル)-実際のヘッダーファイルを含むのはこれらです。

プレーンCコンパイラgccには、同等のパッケージセットがあります。

9
steeldriver