Makefile для кросс-компиляции Linux

0

Мне было предложено перенести наш продукт в другое приложение (наш s/w работает на виртуальном виртуальном сервере Linux)

У меня есть каталог их файлов интерфейса, а также пример кода при попытке настроить их программное обеспечение/аппаратное обеспечение. Я вижу их файлы интерфейса в каталоге s/w. В каталоге справочного кода я вижу make файл со ссылкой на их код ссылки.

Пытается запустить свой код make-кода. получить ошибку, которая

make: *** No rule to make target '../    main.o" :(

Btw не понимает, почему SIMUDIR = -I\..\custom_simcode\ это делается в make- SIMUDIR = -I\..\custom_simcode\? Также мало знакомы с синтаксисом кросс-компилятора!

ifndef CROSS_CC_PREFIX
  CROSS_CC_PREFIX=$(CROSS_COMPILE)
endif

PROGRAM = customer_sim

CC=$(CROSS_CC_PREFIX)gcc
LD=$(CROSS_CC_PREFIX)ld
RANLIB=$(CROSS_CC_PREFIX)corelib
CFLAGS= -g

all: $(PROGRAM)

## Include path
SIMUDIR = -I\..\custom_simcode\             
CUST_INT_INC = -I./../cust_Intf/DecHandler/inc \
             -I./../CCPU

LIBDIR = -L./../cust_Intf \
         -L./../cust_IntfApi

LIBS = -lpthread -customercif -customerapi

LDFLAGS= $(LIBDIR) $(LIBS)
SOURCE = ./../custom_simcode/main.c \
         ./../custom_simcode/custcode_primitives_init.c \
         ./../custom_simcode/custccp_primitives_init.c

CFLAGS += $(SIMUDIR) $(CUST_INT_INC) -DPRINT_IO_CONSOLE -UADAPT_CCPU_CUSTIF
OBJS =  $(SOURCE:.c=.o)

$(PROGRAM): $(OBJS)
    $(CC) -o $@ $(OBJS) $(LDFLAGS)

main.o: $(SIMUDIR)/main.c $(SIMUDIR) $(CUST_INT_INC)
    $(CC) -c -o /main.o $(SIMUDIR)/main.c


clean:
    -rm -f $(OBJS) $(OBJS) $(PROGRAM)
  • 0
    Вы можете использовать некоторые среды с поддержкой chroot - с инструментами разработки внутри.
  • 0
    Это использование SIMUDIR не имеет смысла. Вам следует поговорить с автором make-файла.
Теги:
makefile

1 ответ

1

Единственная проблема заключается в том, что ваши зависимости в списке $ (OBJS) для $ (PROGRAMs) с включенными каталогами, но ваш tule для main.o не имеет одинакового пути.

Было бы лучше иметь общее правило для компиляции файлов C, таких как

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

Затем просто назначьте дополнительные зависимости для каждого файла:

$(OBJS): $(SIMUDIR) $(CUST_INT_INC)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню