gpt4 book ai didi

c++ - Linux交叉编译的Makefile

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:26 24 4
gpt4 key购买 nike

我被要求将我们的产品移植到另一个应用程序中。(我们的软件在 linux virtualbox 上运行)

我有一个他们的接口(interface)文件的目录,还有一个关于尝试配置他们的软件/硬件的示例代码。我在s/w目录下看到了他们的接口(interface)文件。在引用代码目录中,我看到了一个 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) 列出了 $(PROGRAMs) 的依赖项,其中包含目录,但您的 main.o 规则没有相同的路径。

最好有一个通用的规则来编译像这样的C文件

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

然后简单地为每个文件分配额外的依赖关系,例如:

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

关于c++ - Linux交叉编译的Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25470628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com