PDA

View Full Version : Errore in compilazione: mi spiegate?


lamalta
06-07-2004, 18:52
Qualcuno sarebbe così gentile da dirmi da che dipende questo errore?

Grazie!!

Ale

sed "s,%model_name%,Stylus C85_86 Series,; \
s,%bin_name%,pips-sc85_86s," filter.tmp > filter-sc85_86s
make[2]: Leaving directory `/home/lamalta/Desktop/pips-sc85_86s-2.6.2/src'
Making all in dtrfilter
make[2]: Entering directory `/home/lamalta/Desktop/pips-sc85_86s-2.6.2/dtrfilter'
gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c img.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c pfpng.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c main.c
/bin/sh ../libtool --mode=link gcc -g -O2 -Wall -o dtrfilter img.o pfpng.o main.o -ldl -lm ../lib/libdtr.a -lpthread -ldl
mkdir .libs
gcc -g -O2 -Wall -o dtrfilter img.o pfpng.o main.o -lm ../lib/libdtr.a -lpthread -ldl
../lib/libdtr.a(imgdetect_pips.o)(.text+0xac): In function `OutputMemAtBmp':
/home/ysd/branch/pips-devel/pips-closed/src/imgdetect_pips.cc:54: undefined reference to `__builtin_new'
../lib/libdtr.a(imgdetect_pips.o)(.text+0x3a8):/home/ysd/branch/pips-devel/pips-closed/src/imgdetect_pips.cc:106: undefined reference to `__builtin_delete'
../lib/libdtr.a(imgdetect_pips.o)(.text+0x3b8):/home/ysd/branch/pips-devel/pips-closed/src/imgdetect_pips.cc:106: undefined reference to `__rethrow'
../lib/libdtr.a(imgdetect.o)(.text+0x37a): In function `FUNC006::~FUNC006(void)':
/home/ysd/branch/pips-devel/pips-closed/src/imgdetect.cc:128: undefined reference to `__builtin_delete'
collect2: ld returned 1 exit status
make[2]: *** [dtrfilter] Error 1
make[2]: Leaving directory `/home/lamalta/Desktop/pips-sc85_86s-2.6.2/dtrfilter'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/lamalta/Desktop/pips-sc85_86s-2.6.2'
make: *** [all-recursive-am] Error 2

lamalta
07-07-2004, 08:22
HELP!

ilsensine
07-07-2004, 08:49
Originariamente inviato da lamalta
gcc -g -O2 -Wall -o dtrfilter img.o pfpng.o main.o -lm ../lib/libdtr.a -lpthread -ldl
../lib/libdtr.a(imgdetect_pips.o)(.text+0xac): In function `OutputMemAtBmp':
/home/ysd/branch/pips-devel/pips-closed/src/imgdetect_pips.cc:54: undefined reference to `__builtin_new'

La libreria libdtr.a è scritta utilizzando codice c++, che richiede il linkaggio con le librerie c++. Questa riga quindi è errata, in quanto linka solo con le librerie c:

gcc -g -O2 -Wall -o dtrfilter img.o pfpng.o main.o -lm ../lib/libdtr.a -lpthread -ldl


Il problema sta negli script di compilazione, quindi.

Puoi aggirare il problema in più modi; prova innanzitutto con questo:
make LDFLAGS=-lstdc++

lamalta
07-07-2004, 10:30
Ti ringrazio per l'aiuto.
Ho fatto il make che mi hai indicato ma dà lo stesso errore.
Che posso fare?
Grazie ancora

Ale

ilsensine
07-07-2004, 11:02
Entra nella dir /home/lamalta/Desktop/pips-sc85_86s-2.6.2/dtrfilter ed esegui manualmente:
g++ -g -O2 -Wall -o dtrfilter img.o pfpng.o main.o -lm ../lib/libdtr.a -lpthread -ldl
in sostanza è la stessa riga eseguita dagli script, con la sostituzione di gcc con g++. Questo ti creerà il programma "dtrfilter".

lamalta
07-07-2004, 11:14
1) Sei troppo gentile
2) quelli della Epson sanno farli bene i drivers

Questo è l'errore

lamalta@linux:~/Desktop/pips-sc85_86s-2.6.2/dtrfilter> g++ -g -O2 -Wall -o dtrfi lter img.o pfpng.o main.o -lm ../lib/libdtr.a -lpthread -ldl
../lib/libdtr.a(imgdetect_pips.o)(.text+0xac): In function `OutputMemAtBmp':
/home/ysd/branch/pips-devel/pips-closed/src/imgdetect_pips.cc:54: undefined refe rence to `__builtin_new'
../lib/libdtr.a(imgdetect_pips.o)(.text+0x3a8):/home/ysd/branch/pips-devel/pips- closed/src/imgdetect_pips.cc:106: undefined reference to `__builtin_delete'
../lib/libdtr.a(imgdetect_pips.o)(.text+0x3b8):/home/ysd/branch/pips-devel/pips- closed/src/imgdetect_pips.cc:106: undefined reference to `__rethrow'
../lib/libdtr.a(imgdetect.o)(.text+0x37a): In function `FUNC006::~FUNC006(void)' :
/home/ysd/branch/pips-devel/pips-closed/src/imgdetect.cc:128: undefined referenc e to `__builtin_delete'
collect2: ld returned 1 exit status

lamalta
08-07-2004, 12:28
:confused:

ilsensine
08-07-2004, 12:40
Vai a capire dove diavolo definisce quelle funizoni...
Prova ad aggiungere questo parametro al comando:
-lgcc (oppure -lgcc_s)

lamalta
08-07-2004, 12:56
Niente!

p.s.

Scusa per l'OT su IE!

ilsensine
08-07-2004, 13:07
Originariamente inviato da lamalta
2) quelli della Epson sanno farli bene i drivers
Ahah e qui casca l'asino...scommetto che quell'archivio contiene parti precompilate, possibilmente con un altro compilatore. Questo complica un pò le cose.
Hai una mdk 10 per caso?

lamalta
08-07-2004, 13:15
Originariamente inviato da ilsensine
Ahah e qui casca l'asino...scommetto che quell'archivio contiene parti precompilate, possibilmente con un altro compilatore. Questo complica un pò le cose.
Hai una mdk 10 per caso?

No ho una suse 9.1
I drivers sono per una c86 (io ho una c84) perchè per la mia non rilasciano i sorgenti ed i pacchetti RPM mi danno errori di dipendenze.

Ale

ilsensine
08-07-2004, 13:25
Posso darti qualche indicazione, ma non ti garantisco che funzioni. Il problema sta nella parte closed source dei driver.
Innanzitutto devi trovare quale libreria contiene la funzione __builtin_new; dovrebbe essere una delle librerie libstdc++ presenti in /usr/lib (ce ne dovrebbe essere più di una). Puoi vedere se una libreria contiene o meno il simbolo con objdump; ad esempio sul mio computer il simbolo è presente nella libreria libstdc++-3-libc6.2-2-2.10.0:

objdump -T libstdc++-3-libc6.2-2-2.10.0.so |grep __builtin_new

Se il simbolo è presente, ti verrà stampata una riga di questo tipo:

00034894 w DF .text 00000153 Base __builtin_new

Individuata una libreria che lo contiene, linkala direttamente così:
gcc <varie opzioni..> /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so

Più di questo non so che dirti.
Complimenti alla Epson che ha ritenuto segreto di stato un banale algoritmo di dithering.