Hallo zusammen,
ich habe heute endlich mal das Update auf die avr-libc 1.7.0
vorgenommen. Installiert war 1.6.5 aus dem Ubuntu-Repository. 1.7.0 gibt
es da anscheinend noch nicht, daher habe ich mir den Source geholt.
configure und make (install) liefen auch ohne zu murren durch. Das erste
Problem war dann erstmal, dass die alte Version ihre includes und libs
in /usr/lib/avr geschmissen hat, wogegen make install lieber nach
/usr/local/avr installiert. Nach dem anpassen der entsprechenden
Verzeichnisse (Ich verwende code::blocks mit dem AVR-GCC-Plugin)
funktionierte das Kompilieren ohne Probleme.
Aus irgendeinem Grund will der Linker (avr-g++) nun aber keine
Bauteilabhängigen Bibliotheken mehr finden, in meinem Fall die
crtm168.o, bzw. crtm168p.o. Der Aufruf sieht so aus:
avr-g++ -L/usr/local/avr/lib -o default/kassenblinkersteuerung.elf
default/src/blink.o default/src/brightness.o default/src/bus.o
default/src/init.o default/src/main.o -mmcu=atmega168p
-Wl,-Map=default/kassenblinkersteuerung.elf.map,--cref
Die benötigte Datei ist auch vorhanden:
$ find /usr/local/avr -name 'crtm168p.o'
/usr/local/avr/lib/avr5/crtm168p.o
Interessanterweise geht es nichtmal wenn ich die Datei explizit angebe:
$ avr-g++ -l/usr/local/avr/lib/avr5/crtm168p.o -L/usr/local/avr/lib -o
default/kassenblinkersteuerung.elf default/src/blink.o
default/src/brightness.o default/src/bus.o default/src/init.o
default/src/main.o -mmcu=atmega168p
-Wl,-Map=default/kassenblinkersteuerung.elf.map,--cref
/usr/lib/gcc/avr/4.3.4/../../../avr/bin/ld: crtm168p.o: No such file: No
such file or directory
strace meint dazu folgendes (Nur die Zeilen mit crtm168p):
access("/usr/lib/gcc/avr/4.3.4/avr5/crtm168p.o", R_OK) = -1 ENOENT (No
such file or directory)
access("/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr/4.3.4/avr5/crtm168p.
o", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168p.o", R_OK)
= -1 ENOENT (No such file or directory)
access("/usr/lib/gcc/avr/4.3.4/crtm168p.o", R_OK) = -1 ENOENT (No such
file or directory)
access("/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr/4.3.4/crtm168p.o",
R_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib/gcc/avr/4.3.4/../../../avr/lib/crtm168p.o", R_OK) = -1
ENOENT (No such file or directory)
Wo liegt hier das Problem?
Danke und Gruss,
Philipp