Pytanie: Jak skompilować program w C ++ za pomocą kompilatora gcc?
info.c:
#include<iostream>
using std::cout;
using std::endl;
int main()
{
#ifdef __cplusplus
cout << "C++ compiler in use and version is " << __cplusplus << endl;
#endif
cout <<"Version is " << __STDC_VERSION__ << endl;
cout << "Hi" << __FILE__ << __LINE__ << endl;
}
i kiedy próbuję skompilować info.c
$ gcc info.C
Undefined first referenced
symbol in file
cout /var/tmp/ccPxLN2a.o
endl(ostream &) /var/tmp/ccPxLN2a.o
ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o
ostream::operator<<(int) /var/tmp/ccPxLN2a.o
ostream::operator<<(long) /var/tmp/ccPxLN2a.o
ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
Czy kompilator gcc nie jest w stanie kompilować programów w języku C ++? A propos, jaka jest różnica między gcc i g ++. Dzięki,
Odpowiedzi:
gcc może właściwie dobrze skompilować kod C ++. Otrzymane błędy to błędy konsolidatora , a nie błędy kompilatora.
Szanse są takie, że jeśli zmienisz wiersz kompilacji na taki:
gcc info.C -lstdc++
co sprawia, że jest to link do standardowej biblioteki c ++, wtedy będzie działać dobrze.
Jednak powinieneś po prostu ułatwić sobie życie i użyć g ++.
EDYTOWAĆ:
Rup mówi to najlepiej w swoim komentarzu do innej odpowiedzi:
źródło
Jeśli nadasz kodowi rozszerzenie .c, kompilator uzna, że jest to kod w C, a nie C ++. A sterownik kompilatora C ++ nazywa się g ++, jeśli użyjesz sterownika gcc, będziesz miał problemy z konsolidatorem, ponieważ standardowe biblioteki C ++ nie będą domyślnie połączone. Więc chcesz:
g++ myprog.cpp
I nawet nie rozważaj używania rozszerzenia .C pisanego wielkimi literami, chyba że nigdy nie chcesz przenosić swojego kodu i jesteś przygotowany na nienawiść przez tych, z którymi pracujesz.
źródło
.C
(duże) rozszerzenie za rozszerzenie c ++. Następujące działa dobrze:gcc test.C -lstdc++ -o test
lubg++ test.C -o test
.użyj
g++
zamiastgcc
.źródło
Domyślnie gcc wybiera język na podstawie rozszerzenia pliku, ale możesz zmusić gcc do wybrania innego języka za pomocą opcji -x, w ten sposób:
gcc -x c++
Więcej opcji jest szczegółowo opisanych na stronie podręcznika gcc w sekcji „Opcje kontrolujące rodzaj wyjścia”. Zobacz np. Http://linux.die.net/man/1/gcc (szukaj tekstu na stronie
-x language
).Ta funkcja jest bardzo przydatna w przypadkach, gdy gcc nie może odgadnąć języka przy użyciu rozszerzenia pliku, na przykład jeśli generujesz kod i podajesz go do gcc przez stdin.
źródło
Różnica między gcc i g ++ to:
gcc | g++ compiles c source | compiles c++ source
użyj g ++ zamiast gcc do skompilowania źródła c ++.
źródło
Jeśli dobrze pamiętam, gcc określa typ pliku na podstawie przyrostka. Więc zrób to foo.cc i powinno działać.
Odpowiadając na inne pytanie, na tym polega różnica między „gcc” a „g ++”. gcc to nakładka, która wybiera właściwy kompilator.
źródło
U mnie to zadziałało. Tylko jeden kod liniowy w cmd.
Najpierw upewnij się, że zainstalowałeś kompilator gcc (dla c) lub g ++ (dla c ++).
W cmd dla typu gcc:
gcc --version
w cmd dla typu g ++:
g ++ --version
Jeśli jest zainstalowany, kontynuuj.
Teraz skompiluj swój plik .c lub .cpp za pomocą cmd
dla składni .c :
gcc -o exe_filename yourfilename.c
Przykład:
gcc -o mojplik mojplik.c
Tutaj exe_filename (w przykładzie myfile) to nazwa twojego pliku .exe, który chcesz utworzyć po kompilacji (Uwaga: nie wstawiłem tutaj żadnego rozszerzenia). A twoja nazwa pliku.c (na przykład mojplik.c) to twój plik źródłowy, który ma rozszerzenie .c.
Teraz przejdź do folderu zawierającego plik .c, tutaj znajdziesz plik z rozszerzeniem .exe. Po prostu otwórz. Hurra..
Dla składni .cpp :
g ++ -o exe_filename yourfilename.cpp
Po tym proces jest taki sam, jak w przypadku .c.
źródło