Файлы, созданные с помощью make-файла, исчезают (включая двоичный файл)

656
Reid

Я строю программу на TS-7800 (SBC), и когда я запускаю make (см. Ниже), она, кажется, проходит все шаги в обычном режиме, но в итоге я не получаю двоичный файл. Почему это так и как я могу получить свой файл.

Makefile

CC= /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc   # compiler options  #CFLAGS= -O2 CFLAGS= -mcpu=arm9  #CFLAGS= -pg -Wall  # linker  LN= $(CC)  # linker options  LNFLAGS=  #LNFLAGS= -pg  # extra libraries used in linking (use -l command)  LDLIBS= -lpthread  # source files  SOURCES= HMITelem.c Cpacket.c GPS.c ADC.c Wireless.c Receivers.c CSVReader.c RPM.c RS485.c  # include files  INCLUDES= Cpacket.h HMITelem.h CSVReader.h RS485.h  # object files  OBJECTS= HMITelem.o Cpacket.o GPS.o ADC.o Wireless.o Receivers.o CSVReader.o RPM.o RS485.o  HMITelem: $(OBJECTS) $(LN) $(LNFLAGS) -o $@ $(OBJECTS) $(LDLIBS)  .c.o: $*.c $(CC) $(CFLAGS) -c $*.c  RUN : ./HMITelem  #clean: # rm -f *.o # rm -f *~ 

Выход

root@ts7800:ReidTest# make /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c HMITelem.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c Cpacket.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c GPS.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c ADC.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c Wireless.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c Receivers.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c CSVReader.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c RPM.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -mcpu=arm9 -c RS485.c /home/eclipse/ReidTest/cc/cross-toolchains/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc -o HMITelem HMITelem.o Cpacket.o GPS.o ADC.o Wireless.o Receivers.o CSVReader.o RPM.o RS485.o -lpthread 

Спасибо.

0

2 ответа на вопрос

0
sawdust

Неявное правило make для компиляции исходного кода в объектный файл кажется нарушенным. Нет никакой спецификации вывода "-o xo", чтобы идти с "cc -c xc". Есть ли какие-либо объектные файлы после запуска make?

.c.o: $*.c 

Кроме того, приведенная выше спецификация цели, ".co", выглядит странно для меня; возможно, make также не распознает это, и это объясняет, почему неявное правило создания объектного файла не применяется.

Это может быть лучшей целевой спецификацией и предпосылками для правила объектов (прямо из руководства GNU 'make'):

$(OBJECTS): %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ 
Обратите внимание, что вы не должны использовать `>` для цитирования кода, вместо отступа с 4 пробелами. Dan D. 12 лет назад 0
@ Дэн Д. - Спасибо за совет. sawdust 12 лет назад 0
Это сработало !!!! Reid 12 лет назад 0
0
Demi

.co является особым (правило суффикса) только в том случае, если у него нет предварительных условий, и в этом случае каждый файл .c является неявным предварительным условием соответствующего файла .o. Если это необходимо, make пытается создать файл с именем .co! См. Http://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html.

Похожие вопросы