Hallo zusammen,
ich versuche gerade vergeblich, ein Programm für das Webmodul nach
Ulrich Radig
(http://www.ulrichradig.de/home/index.php/avr/avr-webmodule) zu
erstellen.
Ich wollte eigentlich bloß mal gucken, wie groß der Code schon ist und
wie viel Platz ich für mein eigentliches Projekt noch übrig habe. Daher
habe ich einfach nur versucht, die 1.1.06er SW zu kompilieren.
Neben ein paar Kleinigkeiten, die ich beseitigen konnte, bricht make
immer an dieser Stelle ab:
1 | Linking: Hexfiles/Webserver_MEGA644.elf
|
2 | avr-gcc -mmcu=atmega644 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=gnu99 main.o usart.o stack.o timer.o base64.o networkcard/enc28j60.o dns.o httpd.o telnetd.o ntp.o lcd.o wol.o http_get.o analog.o sendmail.o translate.o camera/cam.o camera/servo.o tcpservice/tcpcmd.o tcpservice/tcpsrv.o sdkarte/sdcard.o sdkarte/fat16.o sdkarte/sd.o sdkarte/sd_raw.o sdkarte/partition.o sdkarte/spi.o messung.o 1-wire/crc8.o 1-wire/onewire.o 1-wire/ds18x20.o rc5/rc5.o --output Hexfiles/Webserver_MEGA644.elf -Wl,-Map=Hexfiles/Webserver_MEGA644.map,--cref -lm
|
3 | ntp.o: In function `ntp_request':
|
4 | A:\Dokumente\Programme\Webmodul\avr-webserver/ntp.c:104: undefined reference to `dns_request'
|
5 | make.exe: *** [Hexfiles/Webserver_MEGA644.elf] Error 1
|
Ich habe natürlich erstmal recherchiert, was dieser Fehler bedeutet. Der
Linker soll wohl die Funktion "dns_request" nicht finden. Ich verstehe
allerdings nicht, warum. Die Funktion befindet sich in der Datei
"dns.c". Diese ist im makefile mit "SRC += dns.c" eingebunden. In der
Liste der .o Dateien ist die "dns.o" ja auch vorhanden. Woran kann es
also liegen, dass der linker sich verschluckt?
Hier kurz die relevanten Teile aus dem Code:
dns.h
1 | void dns_request(char *, uint32_t *);
|
dns.c
1 | void dns_request(char *hostname, uint32_t *ip)
|
2 | {
|
3 | _dns_qry(1, hostname, ip); // A-Record anfragen
|
4 | }
|
ntp.c
1 | if ( tmp_ip == 0L ) {
|
2 | dns_request(NTP_SERVER, (uint32_t*)&ntp_server_ip[0]);
|
3 | ntp_timer = 4; // neuer Versuch nach 4 Sekunden
|
4 | NTP_DEBUG(" no IP **\r\n");
|
5 | return;
|
6 | }
|
Ich bin für jede Hilfe dankbar!