14.04.01 32 bits: arquivos de inclusão g + de 64 bits ausentes ao compilar cruzado

6

Então, eu tenho o Xubuntu 14.04.1 de 32 bits instalado. Temos algum código de interface onde pretendemos lançar SOs para as várias plataformas que suportamos e DLLs do Windows. (Sim, eu sei, lançamento binário ruim, mas também não é relevante aqui.)

Estou tentando criar SOs de 32 bits e 64 bits com o 14.04.01 de 32 bits, usando argumentos -m32 / -m64 gcc / g ++. A versão de 32 bits funciona bem, mas a versão de 64 bits falha com

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

Verificando os includes, esse arquivo está genuinamente presente para 32 bits, mas ausente para 64 bits.

Pesquisando o problema, isso parece ter acontecido no passado para o GCC / G ++ 4.6, mas depois é marcado como fixo. Mas o 14.04.1 está usando o GCC / G ++ 4.8, o que sugere que houve uma regressão nessas bibliotecas no GCC / G ++ 4.8. Isso é algo que mais alguém viu?

Eu poderia configurar uma nova VM para o 14.04.1 de 64 bits, se necessário, e verificar se isso seria adequado às versões corretas da biblioteca. Eu prefiro não, se possível, porque eu tenho um monte de outras coisas que eu teria que reinstalar também. Existe uma solução melhor? E se eu instalasse o 14.04.1 de 64 bits, eu definitivamente seria capaz de compilar de volta para 32 bits sem perder cabeçalhos na outra direção?

    
por Graham 15.12.2015 / 20:07

1 resposta

9

O arquivo bits / c ++ config.h de 64 bits é fornecido em sistemas de 32 bits (e vice-versa) instalando o pacote g++-multilib , portanto, é necessário instalar esse pacote usando o Software Center, Synaptic , ou através do terminal usando

sudo apt-get install g++-multilib

Este é apenas um pacote de dependências que resolve para g++-4.8-multilib para a versão padrão do gcc / g ++ e, por sua vez, depende de lib64stdc++-4.8-dev (compilação de 64 bits em 32 bits) ou libx32stdc++-4.8-dev (compilação de 32 bits) em 64 bits) - são estes que contêm os arquivos de cabeçalho reais.

Existe um conjunto equivalente de pacotes para o compilador C simples gcc .

    
por steeldriver 16.12.2015 / 14:26