C++ 用于交叉编译linux的Makefile

C++ 用于交叉编译linux的Makefile,c++,linux,windows,makefile,C++,Linux,Windows,Makefile,我被要求将我们的产品移植到另一个应用程序中。(我们的软件在linux virtualbox上运行) 我有一个他们接口文件的目录,还有一个试图配置他们软件/硬件的示例代码。我在s/w目录下看到了它们的接口文件。在referencecode目录中,我看到一个makefile,其中引用了它们的引用代码 正在尝试运行其引用代码makefile。获取错误信息 make: *** No rule to make target `../ main.o" :( 顺便说一句,我不明白为什么SIMUDIR=

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

我有一个他们接口文件的目录,还有一个试图配置他们软件/硬件的示例代码。我在s/w目录下看到了它们的接口文件。在referencecode目录中,我看到一个makefile,其中引用了它们的引用代码

正在尝试运行其引用代码makefile。获取错误信息

make: *** No rule to make target `../    main.o" :(
顺便说一句,我不明白为什么
SIMUDIR=-I\..\custom\u 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)列出了$(程序)的依赖项,其中包括目录,但main.o的规则没有相同的路径

最好有一个通用的规则来编译C文件,比如

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

您可以使用一些
chroot
-ed环境,其中包含开发工具。使用
SIMUDIR
没有任何意义。你应该和makefile的作者谈谈。
$(OBJS): $(SIMUDIR) $(CUST_INT_INC)