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


8

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

-m32/ -m64gcc / 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ビットにクロスコンパイルできますか?


...おそらく「ここでは関係がない」ものには言及しないでください。関係がないからです。
2015

2
g++-multilibパッケージをインストールしましたか?
steeldriver 2015

@steeldriverありがとうございます-これで終わりです!64ビットインストールにはデフォルトでインストールされているようですが、32ビットインストールにはありません。OK、「LinuxビルドVMの設定方法」チェックリストに追加するもの。:)基本的に思えるかもしれませんが、同じコンパイルエラーに対する他の人の質問の答えとしてこれを見つけなかったため、私は実際にはLinuxの専門家ではありません。
Graham

回答:


9

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

sudo apt-get install g++-multilib

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

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


4
sudo apt-get install g++-5-multilib必要なバージョンを手に入れました。これでうまくいかない場合sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get updateは、私の設定の一部にも注意してください。
U007D
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.