14.04.01 32 bit: mancano g ++ 64 bit includendo i file durante la compilazione incrociata


8

Quindi, ho Xubuntu 14.04.1 a 32 bit installato. Abbiamo un codice di interfaccia in cui intendiamo rilasciare SO per le varie piattaforme supportate e DLL di Windows. (Sì, lo so, rilascio binario male, ma anche qui non pertinente.)

Sto cercando di creare SO a 32-bit e 64-bit con 32-bit 14.04.01, usando gli argomenti -m32/ -m64gcc / g ++. La versione a 32 bit funziona bene, ma la versione a 64 bit non riesce

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

Controllando nelle inclusioni, quel file è veramente presente per 32-bit ma mancante per 64-bit.

Cercando su Google il problema, questo sembra essere accaduto in passato per GCC / G ++ 4.6, ma poi viene contrassegnato come risolto. Ma 14.04.1 sta usando GCC / G ++ 4.8, il che suggerisce che c'è stata una regressione in quelle librerie in GCC / G ++ 4.8. È qualcosa che qualcun altro ha visto?

Potrei impostare una nuova macchina virtuale per 64.04 a 64 bit, se necessario, e vedere se questo prenderebbe le versioni corrette della libreria. Preferirei non farlo, se possibile, perché ho un sacco di altre cose che dovrei reinstallare anche. C'è una soluzione migliore? E se avessi installato il 14.04.1 a 64 bit, sarei sicuramente in grado di compilare nuovamente a 32 bit senza perdere le intestazioni nell'altra direzione?


... forse dovresti evitare di menzionare cose che "non sono rilevanti qui", poiché non sono rilevanti.
mikewhatever,

2
Hai installato il g++-multilibpacchetto?
Steeldriver,

@steeldriver Grazie - è stato! Sembra che l'installazione a 64 bit lo abbia per impostazione predefinita, ma l'installazione a 32 bit no. OK, qualcos'altro da aggiungere alla mia lista di controllo "come impostare una VM build Linux". :) Può sembrare semplice, ma non ho individuato questo come una risposta nelle domande di altre persone per lo stesso errore di compilazione, e non sono un esperto di Linux.
Graham,

Risposte:


9

Il file config.h a 64 bit / c ++ viene fornito su sistemi a 32 bit (e viceversa) installando il g++-multilibpacchetto, quindi è necessario installare quel pacchetto tramite Software Center, Synaptic o tramite il terminale utilizzando

sudo apt-get install g++-multilib

Questo è solo un pacchetto di dipendenze che si risolve con g++-4.8-multilibla versione predefinita di gcc / g ++ e, a sua volta, dipende da lib64stdc++-4.8-dev(compilazione a 64 bit su 32 bit) o libx32stdc++-4.8-dev(compilazione a 32 bit su 64 bit) - sono questi che contengono il file di intestazione effettivi.

C'è una serie equivalente di pacchetti per il compilatore C pianura gcc.


4
sudo apt-get install g++-5-multilibmi ha procurato la versione di cui avevo bisogno. Se questo non funziona per te, anche la nota sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get updatefa parte della mia configurazione.
U007D,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.