GCC 3.2 - chyba linkovani C++
Martin Proks
proks na aerospace.fsik.cvut.cz
Pondělí Listopad 25 10:54:03 CET 2002
Dobry den,
presel jsem na RH 8.0 a chtel jsem si zkompilovat C++
program. I objevila se chyba.
$ gcc -o pokus pokus.cpp
/tmp/ccUEKiBl.o(.eh_frame+0x11): undefined reference to
`__gxx_personality_v0' collect2: ld returned 1 exit status
pri $gcc -c -o pokus.o pokus.cpp a vylistovani objektu v pokus.o
(pomoci mc - F3) se tam objevi misto i18n_init, nebo jejiho ekvivalentu,
to __gxx_personality_v0 + odkaz na funkci _Z9i18n_initv (ta je ale
asi v poradku).
V okamziku kdy nepouziji funkci i18n_init(), ale nasypu to do main(),
vse OK. Neni to problem tohoto konkretniho zdrojaku, dela to s jakoukoli
funkci (vlastni, ne knihovni), zkousel jsem na nekolika "pokusech".
Ciste C preklada OK, zatim jsem nezaznamenal zadny problem. Dokonce
ani u kernelu, ani u teTeX-beta-20021116.
RH 8 uz je nejakou dobu venku a zadne nadavky tohoto druhu jsem
nezaznamenal, update gcc taky neni, takze predpokladam, ze chyba bude
nekde u me (napr. neco nenainstalovane, nebo jsem zapomnel linkovat
nejakou knihovnu, ...), ale nevim kde a co.
Zakladni info o stroji, snad k necemu bude:
RH 8.0
"ne RH jadro - linusovo" - Linux 2.4.18, i686 athlon i386 GNU/Linux
gcc-3.2-7
gcc-c++-3.2-7
libgcc-3.2-7
Dik za nakopnuti,
/* ******* pokus.cpp ************* */
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <libintl.h>
#define LOCALEDIR "."
#define _(str) gettext (str)
#define PROGRAM_NAME "pokus"
void i18n_init (void);
int main (int argv, char *argc[])
{
// i18n initialize
(void) i18n_init ();
// first test ...
(void) printf (_("Bleeeeee\n"));
return 0;
}
void i18n_init (void)
{
(void) setlocale (LC_ALL, "");
(void) bindtextdomain (PROGRAM_NAME, LOCALEDIR);
(void) textdomain (PROGRAM_NAME);
return;
}
/* ********** end of pokus.cpp ******** */
--
Martin Proks
http://aerospace.fsik.cvut.cz/proks http://www.vzlu.cz
mailto: proks na aerospace.fsik.cvut.cz mailto: proks na vzlu.cz
Další informace o konferenci Linux