C++ Build binário de 32 bits em sistema de 64 bits

C++ Build binário de 32 bits em sistema de 64 bits

Portanto, tenho um projeto que desejo construir como um binário de 64 bits e também de 32 bits.
Minha máquina em si é de 64 bits e a compilação de 64 bits funciona perfeitamente.

Estou usando cakepara construir meu projeto e usei set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")para forçar uma construção de 32 bits.

Sempre que tento construir isso, o compilador gera um erro, porque estou incluindo <iostream>no meu programa principal. A princípio, ele reclamou que não conseguia encontrar <bits/c++config.h>o que estava incluído em algum lugar dentro do arquivo <iostream>.
Encontrei algumas coisas online que me levaram a instalar g++-multilibno meu sistema. Agora o erro anterior desapareceu, mas estou recebendo o erro /usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directoryque também tem origem no arquivo #include <iostream>.

Eu verifiquei onde está esse arquivo e o encontrei, /usr/include/x86_64-linux-gnu/asm/errno.hmas (como antes com a c++config.hpasta x86_64parece não ter sido pesquisada em uma compilação de 32 bits (o que faz sentido).
Também encontrei em /usr/include/linux/errno.hque é idêntico ao precioso, mas como você pode ver que não está na asmsubpasta.
Obviamente, eu poderia movê-lo manualmente para essa pasta, mas tenho a sensação de que há algo errado com minha configuração aqui.

Então, o que mais preciso configurar para poder compilar meu código (com um #include <iostream>) como um executável de 32 bits? Existe algo como uma versão de 32 bits da biblioteca std?

EDIT:
Estou usando Linux Mint 18.3 com g++ --versioneg++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0cmake v.3.10.2

Responder1

Tudo bem, descobri qual era o problema:
Quando descobri, tive que usar, g++-multilibfui em frente e procurei no meu gerenciador de pacotes ( synapticno meu caso). Aquele listou um monte de versões, então eu verifiquei qual versão g++eu tinha instalada e então instalei o g++-multilib-package apropriado que no meu caso era o g++-7-multilib.

No entanto, o que não foi instalado foi o gcc-multilibpacote que parece ser o causador de problemas no meu caso. Depois de instalá-lo, funcionou conforme o esperado.


Resumindo: se eu tivesse instalado o g++-multilibpacote (sem uma versão no nome) para começar, não teria esse problema.

informação relacionada