[英]Makefile for cross compilation linux
我被要求将我们的产品移植到另一个应用程序中。(我们的软件正在linux virtualbox上运行)
我已经找到了他们的接口文件的目录,以及有关尝试配置他们的软件/硬件的示例代码。 我在s / w目录下看到了它们的接口文件。 在参考代码目录中,我看到一个带有参考其参考代码的makefile。
尝试运行其参考代码makefile。 得到的错误
make: *** No rule to make target `../ main.o" :(
顺便说一句,不明白为什么SIMUDIR = -I\\..\\custom_simcode\\
是在makefile中完成的? 也对交叉编译器语法不太熟悉!
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)列出了包含目录的$(PROGRAM)的依赖项,但是main.o的规则没有相同的路径。
最好有一个通用规则来编译C文件,例如
%.o: %.c
$(CC) -c -o $@ $<
然后只需为每个文件分配额外的依赖项,例如:
$(OBJS): $(SIMUDIR) $(CUST_INT_INC)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.