Kompilace program C ++ s gcc

hlasů
42

Otázka: Jak sestavit program v jazyce C ++ s gcc kompilátor?

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;
}

a když se snažím kompilovat 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

Není gcc kompilátor schopen sestavení C ++ programy? Na příbuznou notu, jaký je rozdíl mezi gcc a g ++. Dík,

Položena 05/07/2010 v 10:17
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
78

gcc může skutečně kompilovat c ++ kódu v pohodě. Chyby, které jste obdrželi, jsou spojovací chyby, ne kompilátoru chyby.

Je pravděpodobné, že pokud změníte kompilace řádku bylo toto:

gcc info.C -lstdc++

což umožňuje propojit standardní knihovně C ++, pak to bude fungovat v pohodě.

Je však třeba si jen, aby váš život jednodušší a používat g ++.


UPRAVIT:

Rup se říká, že nejlepší ve svém komentáři k jiné odpovědi:

[...] gcc vybere správnou back-end kompilátor na základě přípony souboru (tj sestaví .c jako C a .cc jako C ++) a spojuje binární proti jen standardní C a GCC pomocných knihoven standardně bez ohledu vstupní jazyky; g ++ také zvolit správný back-end na základě přípony kromě toho, že si myslím, že sestavuje všechny zdroje C jako C ++ namísto (tj sestavuje .c i .cc jako C ++) a obsahuje libstdc ++ ve svém odkazu kroku bez ohledu na vstupní jazyky.

Odpovězeno 08/07/2010 v 18:09
zdroj uživatelem

hlasů
30

Dáte-li kód ještě .c rozšíření kompilátor si myslí, že je C kód, ne C ++. A C ++ řidič kompilátor se nazývá g ++, pokud používáte gcc řidič budete mít problémy linker, jako standardní C ++ knihovny nebudou ve výchozím nastavení propojen. Takže ty chceš:

g++ myprog.cpp

A to ani za použití velkých písmen příponu .C, pokud jste nikdy chtít portu kód, a jsou připraveni v nenávisti ty, které pracují s.

Odpovězeno 05/07/2010 v 10:23
zdroj uživatelem

hlasů
15

použít g++místo gcc.

Odpovězeno 05/07/2010 v 10:21
zdroj uživatelem

hlasů
4

Rozdíl mezi gcc a g ++ jsou:

     gcc            |        g++
compiles c source   |   compiles c++ source

použijte g ++ místo gcc zkompilovat budete C ++ zdroj.

Odpovězeno 08/07/2010 v 18:05
zdroj uživatelem

hlasů
2

Fungovalo to dobře pro mě. Jen jeden řádek kódu v cmd.

Nejprve zkontrolujte, zda jste nainstalovali gcc (pro C) nebo g ++ (pro C ++) překladač.

Cmd pro typ gcc:

gcc version

cmd pro typ g ++:

g ++ version

Pokud je nainstalován pak pokračovat.

Nyní sestavit .c nebo cpp pomocí cmd

pro .c syntaxe:

gcc -o exe_filename yourfilename.c

Příklad:

gcc -o myfile myfile.c

Zde exe_filename (myfile v příkladu) je název vašeho exe souboru , který chcete vyrábět po sestavení (poznámka: nemám dát žádnou příponu zde). A yourfilename.c (myfile.c v příkladu), je váš zdrojový soubor , který má příponu .c.

Nyní přejděte do složky obsahující vaše .c soubor, zde najdete soubor s příponou .exe. Jen ji otevřít. Hurá..

Pro cpp syntaxe:

g ++ -o exe_filename yourfilename.cpp

Poté se tento proces je stejný jako pro .c.

Odpovězeno 01/07/2016 v 14:57
zdroj uživatelem

hlasů
2

Můžete vynutit použití gcc zvolit jinou jazykovou backend s -x možnost tedy:

gcc -x c++

Další možnosti jsou podrobně popsány v gcc manuálové stránky pod. Viz např http://linux.die.net/man/1/gcc

Toto zařízení je velmi užitečné v případech, kdy gcc nelze odhadnout jazyk pomocí příponu souboru, například pokud jste generování kódu a krmení, aby gcc prostřednictvím standardního vstupu.

Odpovězeno 24/03/2016 v 01:44
zdroj uživatelem

hlasů
1

Pokud si dobře vzpomínám správně, gcc určuje typ souboru z přípony. Tak, aby bylo foo.cc a mělo by to fungovat.

A abych odpověděl na vaši otázku, jiný, že je rozdíl mezi „gcc“ a „g ++“. gcc je frontend, který zvolí správný kompilátor.

Odpovězeno 05/07/2010 v 10:21
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more