Я строю программу на 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 ответа2

0

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

0

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

.c.o:   $*.c

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

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

$(OBJECTS): %.o: %.c
        $(CC) -c $(CFLAGS) $< -o $@

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .