Forum: Compiler & IDEs (avr-gcc) make, .build_number: file not recognized: File truncated


von Jürgen S. (jsachs)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche in meinem Makefile automatisch eine Build number hochzählen 
zu lassen. Dazu gibt es ja auch einige Beispiele von Tante Google.

Eines was ich verstanden habe, habe ich in meine Makefile integriert und 
bekomme nun folgenden Fehler:
1
avr-gcc -mmcu=atmega32 -I.  -MD -MP -MF .dep/tx_main.elf.d -DF_CPU=16000000UL -DBOOTLOADER_ADR=0x7000 -D_IS_TX -std=gnu99 -D__BUILD_DATE=20121117 -D__BUILD_NUMBER=23 obj/tx_main.o obj/output.o obj/command.o obj/interrupt.o obj/adc.o obj/config.o obj/digital_input.o obj/analog_input.o obj/samsung_lcd.o obj/lcd_common.o obj/eeprom_config.o obj/parseCommand.o obj/menu.o obj/uart.o obj/btm222.o obj/i2c.o obj/avr_helper.o obj/timer.o obj/addr_list.o obj/eeprom_helper.o .build_number --output tx_main.elf -Wl,-Map=tx_main.map,--cref
2
.build_number: file not recognized: File truncated
3
make: *** [tx_main.elf] Error 1
4
*** Fehlgeschlagen ***

So wie ich das verstehe liegt es daran, das durch die Regel des "%.elf", 
auch mein "Buildfile" mit hin zugelinked wird und es dann nicht geht, 
weil es 2 mal geöffnet ist ?! Meine Festplatte ist jedenfalls nicht 
kaputt und das File auf Disk soweit auch ok und wird auch jeweils 
hochgezählt.

Mein Makefile und das "Makeinclude" ist mal als Datei anbei.

Ich bin im Moment ratlos was ich ändern muss, dass es geht.

Noch den Hinweis: Mein Code besteht auf "Globalen Files" und Projekt 
Dateien, daher die Aufteilung der Objektvariablen. Da sgeht soweit auch 
alles Prima.

Hoffe Ihr könnt mir den weg aus dem Wald zeigen.

Danke
Juergen

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

gcc bestimmt den dateityp aus der Extension. Was soll .build_number 
sein? C? Assembler? Object-Datei? Linker-Script?

Wenn gcc die Endung nicht kennt oder du ein anderes Format verwendest, 
ist -x dein Freund.

von Jürgen S. (jsachs)


Lesenswert?

Für den Dateiname habe ich schon so alles durch...

buildnumber.h
buildnumber.txt
buildnumber.c
.buildnumber

es ändert jedoch nichts an der Fehlermeldung.

Eigentlich soll die buildnumber ja nur eine Abhängigkeit sein, jedoch 
nicht mit in die Parameter.

Gruss
JSachs

von user (Gast)


Lesenswert?

Wenn es eine Abhängigkeit in der Makefile sein soll muss sie als 
Abhängigkeit in die Makefile zB:

x: datei
    irgendeinprogramm

Hier ist x von datei abhängig

von user (Gast)


Lesenswert?


von Jürgen S. (jsachs)


Lesenswert?

Es ist doch im Makefile wie folgt definiert:
1
# Name of text file containing build number.
2
BUILD_NUMBER_FILE=.build_number
3
4
%.elf: $(OBJ_PROJECT) $(OBJ_GLOBAL) $(BUILD_NUMBER_FILE) 
5
  $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)

aber durch die Angabe von  $(BUILD_NUMBER_FILE) wird es auch mit zu den 
Parameter aufgenommen. Das will ich ja NICHT.

Das Manual von Make habe ich mir schon angesehen. Weiter bin ich dadurch 
nicht gekommen.

von Stefan E. (sternst)


Lesenswert?

Jürgen Sachs schrieb:
> aber durch die Angabe von  $(BUILD_NUMBER_FILE) wird es auch mit zu den
> Parameter aufgenommen. Das will ich ja NICHT.

Dann ersetze doch das '$^' durch '$(OBJ_PROJECT) $(OBJ_GLOBAL)'.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Jürgen Sachs schrieb:
1
# Name of text file containing build number.
2
BUILD_NUMBER_FILE=.build_number
3
 
4
%.elf: $(OBJ_PROJECT) $(OBJ_GLOBAL) $(BUILD_NUMBER_FILE)
5
   $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)

$^ sind alleAbhängigkeiten!

Eher sowas;
1
# Name of text file containing build number.
2
BUILD_NUMBER_FILE=.build_number
3
 
4
%.elf: $(OBJ_PROJECT) $(OBJ_GLOBAL)
5
   $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
6
7
%.elf: $(BUILD_NUMBER_FILE)

Ist BUILD_NUMBER_FILE wirklich eine Datei oder Phony?

von Jürgen S. (jsachs)


Lesenswert?

Johann L. schrieb:
> Ist BUILD_NUMBER_FILE wirklich eine Datei oder Phony?

Nein, es ist nicht als Phony definiert und die Datei existiert auch.

Mir war nicht bewusst das ich ein Target zweimal angeben kann/darf.

Folgendes hat also geholfen.
1
# Name of text file containing build number.
2
BUILD_NUMBER_FILE=.build_number
3
 
4
%.elf: $(OBJ_PROJECT) $(OBJ_GLOBAL)
5
   $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
6
7
%.elf: $(BUILD_NUMBER_FILE)

Danke
J.Sachs

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.