2013-06-29 14 views
18

Używam Ubuntu 12.04, a domyślny gcc to 4.6.3. Nie przyjmuje poleceń C++ 11 i daje mi dane wyjściowe mówiąc, że polecenie nie jest zgodne z C++ 98. Sprawdziłem online i widziałem ludzi, którzy radzili, aby nie zmieniać domyślnych kompilatorów w systemie operacyjnym, ponieważ stają się niestabilne. Czy ktoś może zaproponować poprawkę lub bezpieczny sposób pobierania kompilatora gcc, który jest zgodny z C++ 11.jak zmienić kompilator gcc na C++ 11 na ubuntu

+8

'g ++ -std = C++ 11' lub jeśli to nie praca, 'g ++ -std = C++ 0x' – jxh

+2

Zawsze możesz zainstalować inną wersję GCC obok wersji systemowej. Możesz nawet samodzielnie skompilować inną wersję. W sieci jest wiele samouczków - wystarczy skorzystać z preferowanej wyszukiwarki. GCC zwykle sufikuje swoje pliki wykonywalne z numerem wersji, a także instaluje określone biblioteki w wersjach katalogowych, więc nowsze wersje nie będą kolidować z wersją dostarczoną przez system. –

Odpowiedz

15

gcc 4.6.3 supports many c++11 features. Są one jednak domyślnie wyłączone. Aby je włączyć, użyj następującej flagi:

g++ -std=c++0x ... 

Ta flaga również wyłącza rozszerzenia GNU; aby je włączyć, użyj flagi -std=gnu++0x.

+0

, więc muszę wprowadzić polecenie kompilowania jako g ++ -o plik wykonywalny filename.cc -std = C++ 0x czy to jest? –

+1

@talasila Prawidłowo. Możesz rozważyć ulepszenie gcc do 4.8, [ma znacznie lepszą obsługę C++ 11] (http://gcc.gnu.org/gcc-4.8/cxx0x_status.html). – dasblinkenlight

+0

w jaki sposób mogę zaktualizować domyślny kompilator do nowego. dlaczego ludzie mówią, aby nie usuwać istniejącej wersji gcc w systemie operacyjnym, ponieważ powoduje to niestabilność systemu? Czy to prawda? –

21

Zgodnie z sugestią innych osób, należy wprowadzić opcję polecenia standardowego. Uczyńmy to łatwo można

  1. Otwórz zacisk naciskając Ctrl + Alt + T
  2. sudo gedit ~/.bashrc
  3. Wpisz następujący wiersz w ostatnim wierszu

    alias g++="g++ --std=c++0x" 
    
  4. Zapisz i zamknij plik i zamknij terminal.
  5. teraz otwarty zacisk ponownie skompilować C++ 11 programów po prostu g++ filename.cpp

to wszystko. Domyślnie będzie kompilował dla standardu C++ 11.

UWAGA: Jeśli po wyżej wymienionej opcji kompilacji non-C++ 11 programów, trzeba użyć

g++ --std=c++98 filename.cpp 
+0

ok. Dzięki. Ale w ostatniej notatce wspomniałeś, że aby skompilować programy inne niż C++ 11, zmień polecenie. Ale nie każda wersja jest kompatybilna wstecz. Tak więc kompilator C++ 11 powinien skompilować nawet program bez poleceń specyficznych dla C++ 11. –

Powiązane problemy