J'ai donc installé Xubuntu 14.04.1 32 bits. Nous avons du code d'interface où nous avons l'intention de publier des SO pour les différentes plates-formes que nous prenons en charge et des DLL Windows. (Oui, je sais, la version binaire est mauvaise, mais elle n'est pas non plus pertinente ici.)
J'essaie de créer des SO 32 bits et 64 bits avec 14.04.01 32 bits, en utilisant des arguments -m32
/ -m64
gcc / g ++. La version 32 bits fonctionne bien, mais la version 64 bits échoue avec
/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory
En vérifiant les inclusions, ce fichier est réellement présent pour 32 bits mais manquant pour 64 bits.
Googler le problème, cela semble être arrivé dans le passé pour GCC / G ++ 4.6, mais est ensuite marqué comme corrigé. Mais 14.04.1 utilise GCC / G ++ 4.8, ce qui suggère qu'il y a eu une régression dans ces bibliothèques dans GCC / G ++ 4.8. Est-ce quelque chose que quelqu'un d'autre a vu?
Je pourrais configurer une nouvelle VM pour 64 bits 14.04.1 si nécessaire et voir si cela prendrait les bonnes versions de bibliothèque. Je préfère ne pas le faire si possible, car j'ai un tas d'autres choses que je devrais également réinstaller. Y a-t-il une meilleure solution? Et si j'avais installé la version 64.04 14.04.1, serais-je définitivement capable de recompiler en 32 bits sans manquer d'en-têtes dans l'autre sens?
g++-multilib
package?Réponses:
Le fichier config.h 64 bits / c ++ est fourni sur les systèmes 32 bits (et vice versa) en installant le
g++-multilib
package, vous devez donc installer ce package en utilisant Software Center, Synaptic ou via le terminal en utilisantCeci est juste un package de dépendances qui se résout en version
g++-4.8-multilib
par défaut gcc / g ++, et dépend à son tour delib64stdc++-4.8-dev
(compilation 64 bits sur 32 bits) oulibx32stdc++-4.8-dev
(compilation 32 bits sur 64 bits) - ce sont ceux-ci qui contiennent le fichiers d'en-tête réels.Il existe un ensemble équivalent de packages pour le compilateur C ordinaire
gcc
.la source
sudo apt-get install g++-5-multilib
m'a donné la version dont j'avais besoin. Si cela ne fonctionne pas pour vous, la notesudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update
fait également partie de ma config.