Problem mit "undefined reference to" bei Ulrich Radigs Webmodul

Gast #3441816
Lesenswert?

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!
Gast #3442176
Lesenswert?

Hallo Rufus,

danke für den Tipp! Die dns.o ist tatsächlich leer. Ich hatte die 
Nutzung der DNS Routine zwar eigentlich aktiviert, aber dies wird an 
anderer Stelle wieder aufgehoben. Die NTP Routine wird an dieser Stelle 
aber nicht mit abgeschaltet.

Ich werde jetzt mal beide möglichen Varianten (MMC/DNS/NTP an bzw. alle 
drei aus) ausprobieren.

Besten Dank!
Timo

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren