Mam więc zainstalowany 32-bitowy Xubuntu 14.04.1. Mamy kod interfejsu, w którym zamierzamy wydać SO dla różnych platform, które obsługujemy, i biblioteki DLL Windows. (Tak, wiem, wydanie binarne jest złe, ale również tutaj nie dotyczy.)
Próbuję zbudować 32-bitowe i 64-bitowe SO z 32-bitowym 14.04.01, używając argumentów -m32
/ -m64
gcc / g ++. Wersja 32-bitowa działa dobrze, ale wersja 64-bitowa kończy się niepowodzeniem
/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory
Po sprawdzeniu załączników plik ten jest rzeczywiście obecny w wersji 32-bitowej, ale brakuje go w wersji 64-bitowej.
Googlując problem, wydaje się, że zdarzyło się to w przeszłości dla GCC / G ++ 4.6, ale potem jest oznaczone jako naprawione. Ale 14.04.1 używa GCC / G ++ 4.8, co sugeruje regresję w tych bibliotekach w GCC / G ++ 4.8. Czy to coś, co widział ktoś inny?
W razie potrzeby mógłbym skonfigurować nową maszynę wirtualną dla 64-bitowego 14.04.1 i sprawdzić, czy wybrałoby to odpowiednie wersje bibliotek. Raczej nie, jeśli to możliwe, ponieważ mam wiele innych rzeczy, które musiałbym również zainstalować ponownie. Czy jest lepsze rozwiązanie? A jeśli zainstalowałbym 64-bitowy 14.04.1, czy na pewno byłbym w stanie przeprowadzić kompilację krzyżową z powrotem do 32-bitowej bez utraty nagłówków w innym kierunku?
g++-multilib
pakiet?Odpowiedzi:
64-bitowy plik config.h bits / c ++ jest dostarczany w systemach 32-bitowych (i odwrotnie) przez zainstalowanie
g++-multilib
pakietu, więc musisz zainstalować ten pakiet albo za pomocą Software Center, Synaptic, lub za pomocą terminala za pomocąJest to tylko pakiet zależności, który rozwiązuje się
g++-4.8-multilib
w przypadku domyślnej wersji gcc / g ++, a z kolei zależy odlib64stdc++-4.8-dev
(kompilacji 64-bitowej w wersji 32-bitowej) lublibx32stdc++-4.8-dev
(kompilacji 32-bitowej w wersji 64-bitowej) - to one zawierają aktualne pliki nagłówkowe.Istnieje odpowiednik zestawu pakietów prostym kompilatora
gcc
.źródło
sudo apt-get install g++-5-multilib
dostałem wersję, której potrzebowałem. Jeśli to nie zadziała, uwagasudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update
jest również częścią mojej konfiguracji.