[c++] compiler doet raar?

Pagina: 1
Acties:

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 22-04 08:47
Ik heb in ansi-c++ een object QAPIdriver geschreven met header en een main.cpp beide in een andere map (resp. ./qlbcpp/qapidriver.cpp en ./main/main.cpp )

Er zitten geen code fouten meer in, deze zijn alle verwijderd, maar tijdens het compilen krijg ik de volgende melding:
[root@linuxbak main]# gcc main.cpp ../qlbcpp/qapidriver.cpp -o test
/tmp/ccRwQeXO.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Wat houdt deze melding in?
En belangrijker nog hoe los ik deze op

if broken it is, fix it you should


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Gewoon ff g++ runnen ipv gcc loste dat bij mij op, bij een soort gelijke melding iig.

[ Voor 26% gewijzigd door TheNameless op 24-11-2005 13:43 ]

Ducati: making mechanics out of riders since 1946


  • Sendy
  • Registratie: September 2001
  • Niet online
Het betekent dat er een variable gebruikt wordt "__gxx_personality_v0". Echter deze variable is nergens gedefinieerd, dus de linker klaagt dat-ie hem niet kan vinden.

Je kan dit oplossen door uit te zoeken waar die variable wel gedefinieerd wordt en hiervoor eventuele headers te includen en bijhorende source mee te linken.

Wat de poster hierboven schrijft is ook een goede tip. "gxx" duidt er wel op dat het een C++ ding is en niet gewoon C. Hierbij kan ik nog opmerken dat GCC extensie "cc" als C++ aanmerkt en "cpp" als C preprocessor file ziet.

[ Voor 32% gewijzigd door Sendy op 24-11-2005 13:46 ]


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 22-04 08:47
G++ does the trick ja.

Volgens man gcc is alles hetzelfde:
file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C
C++ source code which must be preprocessed. Note that in .cxx, the last two letters must both be literally x. Likewise, .C
refers to a literal capital C.
Dus ik denk dat het ergens anders aan moet liggen

if broken it is, fix it you should


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Veel mensen vergeten "-lstdc++" te linken bij C++ code en gcc. Probeer dat eens?

  • Sendy
  • Registratie: September 2001
  • Niet online
Okay, dat cpp vs. cc is mijn fout.

Maar let wel, het gaat hier om de linker. Ook al snapt GCC hoe de file gecompileerd moet worden, bij het linken weet GCC nog niet dat er met standaard C++ libraries gelinkt moet worden.

Maar goed, G++ lost dat op.

[ Voor 11% gewijzigd door Sendy op 24-11-2005 14:30 ]


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 22-04 08:47
Zoijar schreef op donderdag 24 november 2005 @ 14:06:
Veel mensen vergeten "-lstdc++" te linken bij C++ code en gcc. Probeer dat eens?
Dat werkt ook; wat doet die lstdc++ ? Zeggen dat is C++ oid?

if broken it is, fix it you should


  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

elgringo schreef op donderdag 24 november 2005 @ 14:54:
[...]


Dat werkt ook; wat doet die lstdc++ ? Zeggen dat is C++ oid?
Met '-l' link je een library. De librarienaam plak je daar direct aan vast. In dit geval heet de library dus 'stdc++', wat vast wel iets als 'Standard C++ Library' betekent. G++ weet al dat hij c++ code gaat compileren, dus die pakt hem er uit zichzelf al bij waardoor je hem niet expliciet hoeft toe te voegen.

[ Voor 10% gewijzigd door eamelink op 24-11-2005 14:58 ]


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ja, precies wat eamelink zegt
Pagina: 1