Also habe ich 32-Bit Xubuntu 14.04.1 installiert. Wir haben einen Schnittstellencode, in dem wir SOs für die verschiedenen von uns unterstützten Plattformen und Windows-DLLs veröffentlichen möchten. (Ja ich weiß, binäre Veröffentlichung schlecht, aber auch hier nicht relevant.)
Ich versuche, 32-Bit- und 64-Bit-SOs mit 32-Bit 14.04.01 unter Verwendung von -m32
/ -m64
gcc / g ++ - Argumenten zu erstellen . Die 32-Bit-Version funktioniert einwandfrei, die 64-Bit-Version schlägt jedoch fehl
/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory
Beim Einchecken der Includes ist diese Datei für 32-Bit wirklich vorhanden, für 64-Bit fehlt sie jedoch.
Beim Googeln des Problems scheint dies in der Vergangenheit für GCC / G ++ 4.6 passiert zu sein, wird dann aber als behoben markiert. 14.04.1 verwendet jedoch GCC / G ++ 4.8, was darauf hindeutet, dass diese Bibliotheken in GCC / G ++ 4.8 eine Regression aufweisen. Ist das etwas, was jemand anderes gesehen hat?
Ich könnte bei Bedarf eine neue VM für 64-Bit 14.04.1 einrichten und prüfen, ob dadurch die richtigen Bibliotheksversionen abgerufen werden. Ich würde es aber lieber nicht tun, wenn es möglich ist, da ich eine Reihe anderer Dinge habe, die ich ebenfalls neu installieren müsste. Gibt es eine bessere Lösung? Und wenn ich 64-Bit 14.04.1 installiert hätte, wäre ich dann definitiv in der Lage, auf 32-Bit zurück zu kompilieren, ohne Header in die andere Richtung zu verpassen?
g++-multilib
Paket installiert ?Antworten:
Die 64-Bit-Datei / c ++ config.h wird auf 32-Bit-Systemen (und umgekehrt) durch Installation des
g++-multilib
Pakets bereitgestellt. Sie müssen dieses Paket also entweder über Software Center, Synaptic oder über das Terminal mithilfe installierenDies ist nur ein Abhängigkeitspaket, das
g++-4.8-multilib
für die Standardversion gcc / g ++ aufgelöst wird und wiederum vonlib64stdc++-4.8-dev
(64-Bit-Kompilierung auf 32-Bit) oderlibx32stdc++-4.8-dev
(32-Bit-Kompilierung auf 64-Bit) abhängt - diese enthalten das tatsächliche Header-Dateien.Es gibt einen äquivalenten Satz von Paketen für den einfachen C-Compiler
gcc
.quelle
sudo apt-get install g++-5-multilib
habe mir die Version besorgt, die ich brauchte. Wenn dies bei Ihnen nicht funktioniert, ist notesudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update
auch Teil meiner Konfiguration.