C++ 64ビットシステムで32ビットバイナリをビルドする[閉じる]

C++ 64ビットシステムで32ビットバイナリをビルドする[閉じる]

そのため、64ビットバイナリと32ビットバイナリでビルドできるプロジェクトがあります。
私のコンピュータ自体は64ビットで、64ビットコンパイルはうまく機能します。

私はcakeこれを使ってプロジェクトをビルドし、set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")32ビットビルドを強制するために使用しています。

<iostream>ビルドしようとするたびにメインプログラムに含めるため、コンパイラでエラーが発生します。最初は<bits/c++config.h>その中に含まれた内容が見つからないと文句を言いました<iostream>。オンラインで私のシステムにインストールするように
求められました。g++-multilib今、以前のエラーは消えましたが、私が受け取っていたエラー /usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory#include <iostream>

このファイルの場所を確認してみたところ、そこで見つけました/usr/include/x86_64-linux-gnu/asm/errno.h(以前と同じように32ビット版では フォルダがc++config.h検索されないようです(これはx86_64一理があります)。見ることができます。
/usr/include/linux/errno.hasm

#include <iostream>もしそうなら、私のコード(を使って)を32ビットの実行可能ファイルにコンパイルするには何を設定する必要がありますか?同様の32ビットバージョンのstdライブラリはありますか?

編集:
私はLinux Mint 18.3をandと一緒に使用していg++ --versionますg++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0cmake v.3.10.2

答え1

まあ、問題を発見しました。問題が見つかったら、パッケージマネージャで引き続き検索する必要がありました
(私の場合)。ここには複数のバージョンがリストされているので、どのバージョンをインストールしたかを確認し、適切なパッケージをインストールしました。私の場合は。 g++-multilibsynapticg++g++-multilibg++-7-multilib

しかし、インストールされていないのはgcc-multilib私の場合、問題を引き起こすように見えるパッケージでした。インストール後、期待どおりに動作します。


簡単に言うと、g++-multilib最初に(名前にバージョンなしで)パッケージをインストールした場合は、この問題は発生しませんでした。

関連情報