Problem s kompilerom jazyka C++
-
apocalyptic
Amateur
- Príspevky: 10
- Registrovaný: 07 júl 2009, 16:08
Problem s kompilerom jazyka C++
Dobry den, takze mam problem ohlade kompilacie jedneho source napisaneho v C++ pomocu kompilatora gcc ...
System : GNU/LINUX Ubuntu
Source:
#include <iostream>
int main();
{
std::cout << "Nazdar Ludia!\n";
return 0
}
Ulozeny ako subor hehe.cpp
Ano, je to "amateur code" pretoze len zacinam...
do vstupu (terminalu) zadam gcc alebo g++ alebo gcc hehe.cpp -o program
Problem:
Kompiler oznamuje chybove hlasenie na stvrtom riadku...
Konkretne:
hehe.cpp:4: error: expected unqualified-id before ‘{’ token
No nejako mi to neda ale ze by nedokazal , resp. nepochopil znak '{’ ?
Dakujem za objasnenie tejto situacie , pripadne za pomoc poskytnutia vhodneho riesenia.
System : GNU/LINUX Ubuntu
Source:
#include <iostream>
int main();
{
std::cout << "Nazdar Ludia!\n";
return 0
}
Ulozeny ako subor hehe.cpp
Ano, je to "amateur code" pretoze len zacinam...
do vstupu (terminalu) zadam gcc alebo g++ alebo gcc hehe.cpp -o program
Problem:
Kompiler oznamuje chybove hlasenie na stvrtom riadku...
Konkretne:
hehe.cpp:4: error: expected unqualified-id before ‘{’ token
No nejako mi to neda ale ze by nedokazal , resp. nepochopil znak '{’ ?
Dakujem za objasnenie tejto situacie , pripadne za pomoc poskytnutia vhodneho riesenia.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
-
apocalyptic
Amateur
- Príspevky: 10
- Registrovaný: 07 júl 2009, 16:08
ddads
Dakujem, nechal som nasledne vytvorit subor hehe s koncovkou .obj ... "hehe.obj"
Lenze teraz mam jeden problem, neviem ako by to bolo treba previest linkerom kedze :
ld (cesta) hehe.obj
vypis:
ld: error in hehe.obj(.eh_frame); no .eh_frame_hdr table will be created.
Nejako som mimo , .eh_frame ??
Inak ako tak citam tak treba subor hehe.obj prepojit so vsetkymi potrebnymi kniznicamy , neman niekto sajn ako to urobit ?
Lenze teraz mam jeden problem, neviem ako by to bolo treba previest linkerom kedze :
ld (cesta) hehe.obj
vypis:
ld: error in hehe.obj(.eh_frame); no .eh_frame_hdr table will be created.
Nejako som mimo , .eh_frame ??
Inak ako tak citam tak treba subor hehe.obj prepojit so vsetkymi potrebnymi kniznicamy , neman niekto sajn ako to urobit ?
-
apocalyptic
Amateur
- Príspevky: 10
- Registrovaný: 07 júl 2009, 16:08
re:
Ano , presne to som urbil lenze , cital som ze kompilaciou treba vytvorit subor tzv. obj , cize som to urobil takto : g++ hehe.cpp -o hehe.obj , cize mam vytvoreny subor "hehe.obj" a teraz nechapem ako z toho urobim spustitelny subor/program pomocou linkeru ...
-
apocalyptic
Amateur
- Príspevky: 10
- Registrovaný: 07 júl 2009, 16:08
re:
dakujem pekne , konecne sa dostavam ku chapaniu situacie
.... takze este par otazok , kedze "gcc hehe.cpp -o program , keby som zmenil hodnotu slova program napr na: "auto" tak by to vytvorilo binarku s nazvom auto ? Ak ano tak rozumiem , ale chcem sa opytat po kompilaci a prevedeni linkerom vystup :
/tmp/cc4s56fC.o: In function `main':
hehe.cpp:(.text+0x1c): undefined reference to `std::cout'
hehe.cpp:(.text+0x21): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/cc4s56fC.o: In function `__static_initialization_and_destruction_0(int, int)':
hehe.cpp:(.text+0x50): undefined reference to `std::ios_base::Init::Init()'
hehe.cpp:(.text+0x55): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cc4s56fC.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
cize toto je adresar kde sa nachadza binarka : /tmp/cc4s56fC ? a este jedna otazka : neviem ako to spustit... dakujem
/tmp/cc4s56fC.o: In function `main':
hehe.cpp:(.text+0x1c): undefined reference to `std::cout'
hehe.cpp:(.text+0x21): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/cc4s56fC.o: In function `__static_initialization_and_destruction_0(int, int)':
hehe.cpp:(.text+0x50): undefined reference to `std::ios_base::Init::Init()'
hehe.cpp:(.text+0x55): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cc4s56fC.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
cize toto je adresar kde sa nachadza binarka : /tmp/cc4s56fC ? a este jedna otazka : neviem ako to spustit... dakujem
-
apocalyptic
Amateur
- Príspevky: 10
- Registrovaný: 07 júl 2009, 16:08
re:
jo jo , vsetko ide diki moc , cize v tom kompilery je vlastne zabudovany aj linker ano ? diki moc
Nie, nie je tam ani kompilátor a ani linker. Program gcc/g++ je v podstate len taký "mozog". Podľa parametrov a prípon sa rozhoduje čo konkrétne sa má robiť. V tom tvojom prípade teda najskôr zavolá preprocesor (program cpp) potom kompilátor (cc1/cc1plus), on vygeneruje assembler, ten sa potom spracuje ďalším programom (konkrétne programom as), ktorý vygeneruje objektové súbory a tie sa potom spoja linkerom (a teda programom ld).
Teda ak by si veľmi chcel, môžeš gcc/g++ úplne ignorovať a mohol by si všetky tie kroky urobiť ručne.
gcc v tvojom prípade nefunguje kvôli tomu, že je to C++ kód a teda potrebuje nejaké veci navyše (konkrétne jednu knižnicu). So správnymi parametrami by sa dal použiť aj gcc, ale jednoduchšie je použiť priamo g++.
gcc v tvojom prípade nefunguje kvôli tomu, že je to C++ kód a teda potrebuje nejaké veci navyše (konkrétne jednu knižnicu). So správnymi parametrami by sa dal použiť aj gcc, ale jednoduchšie je použiť priamo g++.
-
apocalyptic
Amateur
- Príspevky: 10
- Registrovaný: 07 júl 2009, 16:08
re:
ej , bazmeg no to som fakt nevedel ale vdaka
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
Ináč ešte môžeš pozrieť www.programujte.cz tam je to celkom fajne pre začiatočníkov, knihu by som odporučil Mistrovství C++, ale to až vtedy ak toho už dačo budeš vedieť o programovaní a budeš sa tomu chieť viac venovať.ST1GD3R napísal:Mohol by som vedieť že z akej stránky? Alebo knihy alebo z čoho sa učíš keď si tam videl že za int main() je ; ??
-
Vertmich
Light Expert
- Príspevky: 41
- Registrovaný: 17 júl 2009, 16:38
- Bydlisko: Co by si chcel vediet!?
- Kontaktovať používateľa:
chyba
ja neviem ja som taky nie velmi dobry c++ programator ale som sa na to pozrel a videl som ze tak nie je ciarka
neviem preco si dal niekde ciarku a niekde nie asi nepozornost
ale zao to by si mal ediet nie
ale nic sa nestalo
neviem preco si dal niekde ciarku a niekde nie asi nepozornost
ale zao to by si mal ediet nie
ale nic sa nestalo