Мне было предложено перенести наш продукт в другое приложение (наш 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)
Единственная проблема заключается в том, что ваши зависимости в списке $ (OBJS) для $ (PROGRAMs) с включенными каталогами, но ваш tule для main.o не имеет одинакового пути.
Было бы лучше иметь общее правило для компиляции файлов C, таких как
%.o: %.c
$(CC) -c -o $@ $<
Затем просто назначьте дополнительные зависимости для каждого файла:
$(OBJS): $(SIMUDIR) $(CUST_INT_INC)
chroot
- с инструментами разработки внутри.SIMUDIR
не имеет смысла. Вам следует поговорить с автором make-файла.