Fehlermeldung: __gmp_get_memory_functions
Fehlermeldung: __gmp_get_memory_functions
hallo
ich habe folgende fehlermeldung beim compilieren erhalten:
Compiling C: ultraschall.c
avr-gcc -c -mmcu=atmega32 -I. -g -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./ultraschall.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/ultraschall.o.d ultraschall.c -o ultraschall.o
/usr/lib/gcc/avr/4.3.2/cc1: symbol lookup error: /usr/lib/libmpfr.so.1: undefined symbol: __gmp_get_memory_functions
make: *** [ultraschall.o] Error 1
wenn ich in meinem main programm folgende zeile (adc_p = (double) (4.096/pow(2,resolution)*adc_mittel);) ausblende wird alles einwandfrei compiliert.
der fehler taucht auf wenn die math.h lib eingebunden wird (pow(x,x) funktion).
ich habe im internet schon nach dem fehler ermittelt aber kann leider nicht viel damit anfangen.
kann mir einer erklären wofür die "/usr/lib/libmpfr.so.1" lib datei benötigt wird und wie ich den fehler beseitigen kann.
ich vermute das meine installation vom avr-gcc nicht schlüssig ist.
Mein system ist von debian etch auf lenny geupdatet worden.
ich programmiere unter kdevelop 3.5.
gruß TOO0M
ich habe folgende fehlermeldung beim compilieren erhalten:
Compiling C: ultraschall.c
avr-gcc -c -mmcu=atmega32 -I. -g -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./ultraschall.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/ultraschall.o.d ultraschall.c -o ultraschall.o
/usr/lib/gcc/avr/4.3.2/cc1: symbol lookup error: /usr/lib/libmpfr.so.1: undefined symbol: __gmp_get_memory_functions
make: *** [ultraschall.o] Error 1
wenn ich in meinem main programm folgende zeile (adc_p = (double) (4.096/pow(2,resolution)*adc_mittel);) ausblende wird alles einwandfrei compiliert.
der fehler taucht auf wenn die math.h lib eingebunden wird (pow(x,x) funktion).
ich habe im internet schon nach dem fehler ermittelt aber kann leider nicht viel damit anfangen.
kann mir einer erklären wofür die "/usr/lib/libmpfr.so.1" lib datei benötigt wird und wie ich den fehler beseitigen kann.
ich vermute das meine installation vom avr-gcc nicht schlüssig ist.
Mein system ist von debian etch auf lenny geupdatet worden.
ich programmiere unter kdevelop 3.5.
gruß TOO0M
Re: Fehlermeldung: __gmp_get_memory_functions
welche gmp Version verwendest du ( sollte das Paket "libgmp3c2" sein ) ?
dieses Symbol wird in libmpfr.so referenziert und von libgmp.so zur Verfügung gestellt:
unter Debian kannst du dir die Symbole in einer ELF Datei z.B so anschauen:
vielleicht hilfts, wenn du die Option "-lgmp" zusätzlich angibst
Gruß
gms
dieses Symbol wird in libmpfr.so referenziert und von libgmp.so zur Verfügung gestellt:
Code: Alles auswählen
gms1 ~ # nm /usr/lib64/debug/usr/lib64/libmpfr.so.1.2.0.debug | grep gmp_get_memory
U __gmp_get_memory_functions
gms1 ~ # ldd /usr/lib64/libmpfr.so | grep gmp
libgmp.so.3 => /usr/lib/libgmp.so.3 (0x00007f3d4d976000)
gms1 ~ # nm /usr/lib64/debug/usr/lib64/libgmp
libgmp.so.3.4.4.debug libgmpxx.so.4.0.4.debug
gms1 ~ # nm /usr/lib64/debug/usr/lib64/libgmp.so.3.4.4.debug | grep gmp_get_memory
0000000000009cfc T __gmp_get_memory_functions
gms1 ~ #
Code: Alles auswählen
root@gms2:/# readelf -s /usr/lib/libgmp.so.3.4.2 | grep memory
91: 00000000000325a0 113 FUNC GLOBAL DEFAULT 11 __gmp_asprintf_memory
253: 0000000000008920 64 FUNC GLOBAL DEFAULT 11 __gmp_set_memory_function
255: 00000000000088e0 56 FUNC GLOBAL DEFAULT 11 __gmp_get_memory_function
Gruß
gms
Re: Fehlermeldung: __gmp_get_memory_functions
hallo entschuldige meine späte antwort.
die version ist die "libgmp3c2".
habe -lgmp angegeben :
Compiling C: ultraschall.c
avr-gcc -c -mmcu=atmega32 -I. -g -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -lgmp -Wa,-adhlns=./ultraschall.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/ultraschall.o.d ultraschall.c -o ultraschall.o
/usr/lib/gcc/avr/4.3.2/cc1: symbol lookup error: /usr/lib/libmpfr.so.1: undefined symbol: __gmp_get_memory_functions
make: *** [ultraschall.o] Error 1
das ist die ansicht meiner elf datei:
ServerPC:~$ readelf -s /usr/lib/libgmp.so.3.4.2 | grep memory
109: 0003c440 117 FUNC GLOBAL DEFAULT 11 __gmp_asprintf_memory
120: 000098f0 120 FUNC GLOBAL DEFAULT 11 __gmp_set_memory_function
550: 00009890 86 FUNC GLOBAL DEFAULT 11 __gmp_get_memory_function
ich habe die i386 version von debian ich vermute das die libs dann wie folgt zu suchen sind:
ServerPC:~$ nm /usr/lib/debug/usr/lib/libmpfr.so.1.2.0.debug | grep gmp_get_memory
nm: '/usr/lib/debug/usr/lib/libmpfr.so.1.2.0.debug': No such file
ServerPC:~$ ldd /usr/lib/libmpfr.so | grep gmp
ldd: /usr/lib/libmpfr.so: Datei oder Verzeichnis nicht gefunden
aber dort finde ich die angegebenen dateien nicht.
in der dem verzeichnis lib64 steht nur folgendes:
ServerPC:/usr/lib64$ ls
crt0-efi-x86_64.o elf_x86_64_efi.lds libefi.a libfakeroot libgnuefi.a
libfakeroot ist dort das einzigste unterverzeichnis.
ich bin hier an dieser stelle etwas hilflos. wie gesagt ich programmiere unter avr-gcc und kann noch nicht nachvollziehen wie die /usr/lib/libmpfr.so.1 in den compiler vorgang reinspielt. der avr-gcc hat doch nichts mit dem linux gcc zu tun.
gruss TOO0M
die version ist die "libgmp3c2".
habe -lgmp angegeben :
Compiling C: ultraschall.c
avr-gcc -c -mmcu=atmega32 -I. -g -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -lgmp -Wa,-adhlns=./ultraschall.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/ultraschall.o.d ultraschall.c -o ultraschall.o
/usr/lib/gcc/avr/4.3.2/cc1: symbol lookup error: /usr/lib/libmpfr.so.1: undefined symbol: __gmp_get_memory_functions
make: *** [ultraschall.o] Error 1
das ist die ansicht meiner elf datei:
ServerPC:~$ readelf -s /usr/lib/libgmp.so.3.4.2 | grep memory
109: 0003c440 117 FUNC GLOBAL DEFAULT 11 __gmp_asprintf_memory
120: 000098f0 120 FUNC GLOBAL DEFAULT 11 __gmp_set_memory_function
550: 00009890 86 FUNC GLOBAL DEFAULT 11 __gmp_get_memory_function
ich habe die i386 version von debian ich vermute das die libs dann wie folgt zu suchen sind:
ServerPC:~$ nm /usr/lib/debug/usr/lib/libmpfr.so.1.2.0.debug | grep gmp_get_memory
nm: '/usr/lib/debug/usr/lib/libmpfr.so.1.2.0.debug': No such file
ServerPC:~$ ldd /usr/lib/libmpfr.so | grep gmp
ldd: /usr/lib/libmpfr.so: Datei oder Verzeichnis nicht gefunden
aber dort finde ich die angegebenen dateien nicht.
in der dem verzeichnis lib64 steht nur folgendes:
ServerPC:/usr/lib64$ ls
crt0-efi-x86_64.o elf_x86_64_efi.lds libefi.a libfakeroot libgnuefi.a
libfakeroot ist dort das einzigste unterverzeichnis.
ich bin hier an dieser stelle etwas hilflos. wie gesagt ich programmiere unter avr-gcc und kann noch nicht nachvollziehen wie die /usr/lib/libmpfr.so.1 in den compiler vorgang reinspielt. der avr-gcc hat doch nichts mit dem linux gcc zu tun.
gruss TOO0M
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: Fehlermeldung: __gmp_get_memory_functions
Und was ist mit?ldd: /usr/lib/libmpfr.so: Datei oder Verzeichnis nicht gefunden
Code: Alles auswählen
ldd /usr/lib/libmpfr.so.1
Re: Fehlermeldung: __gmp_get_memory_functions
leider kenne ich diesen Compiler auch nicht, aber bei deinem Aufruf handelt es sich um einen reinen Compiler/Assembler-Vorgang ( wegen der "-c" Option), gelinkt sollte hier eigentlich nicht werden. Daher habe ich eher die Vermutung, daß der Compiler selber diese Library benötigt, wenn er einen speziellen Code übersetzen muß.TOO0M hat geschrieben: ich bin hier an dieser stelle etwas hilflos. wie gesagt ich programmiere unter avr-gcc und kann noch nicht nachvollziehen wie die /usr/lib/libmpfr.so.1 in den compiler vorgang reinspielt.
der avr-gcc hat doch nichts mit dem linux gcc zu tun.
Im Grunde sehe ich diese Vermutung
als bestätigt und eine Neuinstallation vom "avr-gcc" sollte helfen.TOO0M hat geschrieben: ich vermute das meine installation vom avr-gcc nicht schlüssig ist.
warum stellst du Vermutungen an, steht doch hier wo die libmpfr.so zu finden ist:TOO0M hat geschrieben: ich habe die i386 version von debian ich vermute das die libs dann wie folgt zu suchen sind:
Code: Alles auswählen
/usr/lib/gcc/avr/4.3.2/cc1: symbol lookup error: /usr/lib/libmpfr.so.1: undefined symbol: __gmp_get_memory_functions
gms
Re: Fehlermeldung: __gmp_get_memory_functions
hallo habe in einem englischsprachigem forum die lösung gefunden:
unter ServerPC:/usr/local/lib waren folgende dateien gelistet:
libgmp.a libgmp.la libgmp.so libgmp.so.3 libgmp.so.3.3.3
habe die dateien nach unterverzeichnis "waste" verschoben.
ServerPC:/usr/local/lib/waste$ ls
libgmp.a libgmp.la libgmp.so libgmp.so.3 libgmp.so.3.3.3
anschließend mein projekt neu compiliert. und sie da. fehler weg.
der zusammenhang wieso avr-gcc in diesem verzeichnis versucht irgendwelche zuordnungen aufzulösen ist mir aber immer noch nicht klar.
auch ist mir nicht verständlich wieso in diesem verzeichnis diese dateien stehen und wofür sie benötigt werden?
vielen dank für eure antworten die mir bei der suche nach der lösung sehr geholfen haben.
gruss TOO0M
unter ServerPC:/usr/local/lib waren folgende dateien gelistet:
libgmp.a libgmp.la libgmp.so libgmp.so.3 libgmp.so.3.3.3
habe die dateien nach unterverzeichnis "waste" verschoben.
ServerPC:/usr/local/lib/waste$ ls
libgmp.a libgmp.la libgmp.so libgmp.so.3 libgmp.so.3.3.3
anschließend mein projekt neu compiliert. und sie da. fehler weg.
der zusammenhang wieso avr-gcc in diesem verzeichnis versucht irgendwelche zuordnungen aufzulösen ist mir aber immer noch nicht klar.
auch ist mir nicht verständlich wieso in diesem verzeichnis diese dateien stehen und wofür sie benötigt werden?
vielen dank für eure antworten die mir bei der suche nach der lösung sehr geholfen haben.
gruss TOO0M
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: Fehlermeldung: __gmp_get_memory_functions
Hast du den avr-gcc aus den Debianquellen installiert (gcc-avr)? Wo kommen die verdächtigen Bibliotheken in /usr/local/lib her?
Re: Fehlermeldung: __gmp_get_memory_functions
zu 1.: ja deswegen und noch ein paar anderen gründen habe ich ein update von sarge auf lenny gemacht.
zu 2.: gute frage nächste frage!
gruss TOO0M
zu 2.: gute frage nächste frage!
gruss TOO0M