Файлы, созданные с помощью make-файла, исчезают (включая двоичный файл)
Я собираю программу на 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
Спасибо.
2 ответа
Неявное правило make для компиляции исходного кода в объектный файл кажется нарушенным. Нет никакой спецификации вывода "-o xo", чтобы идти с "cc -c xc". Есть ли какие-либо объектные файлы после запуска make?
.c.o: $*.c
Кроме того, приведенная выше спецификация цели, ".co", выглядит странно для меня; возможно, make также не распознает это, и это объясняет, почему неявное правило создания объектного файла не применяется.
Это может быть лучшей целевой спецификацией и предпосылками для правила объектов (прямо из руководства GNU 'make'):
$(OBJECTS): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
.co является особым (правило суффикса) только в том случае, если у него нет предварительных условий, и в этом случае каждый файл.c является неявной предпосылкой соответствующего файла.o. Если это необходимо, make пытается создать файл с именем.co! См. http://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html