使用arm-ulinucxeabi-gcc编译多个源文件,包括-o -c选项

使用arm-ulinucxeabi-gcc编译多个源文件,包括-o -c选项

我正在编译多个依赖于多个头文件的 c 源代码。

生成文件

SHELL=cpp2             
SOAPC=/home/amarayya/doc/../linux-lpc-1.9.0/linux-cortexm-1.9.0/projects/solus_test/app/std2.c
LDFLAGS        := -mcpu=cortex-m3 -mthumb -L $(INSTALL_ROOT)/A2F/root/usr/lib
CFLAGS        := -Os -mcpu=cortex-m3 -mthumb -I$(INSTALL_ROOT)/A2F/root/usr/include
CC=$(CROSS_COMPILE_APPS)gcc
LIBS=
COFLAGS=-O2
CWFLAGS=-Wall
CIFLAGS=
CMFLAGS=
 
out: calc.o spC.o Client.o std2.o
    $(CC) $(LDFLAGS) $(CFLAGS) $(SHELL) -o out calc.o spC.o Client.o std2.o $(LIBS)

calc.o    : calc.c spH.h 
    $(CC) $(LDFLAGS) $(CFLAGS) -c calc.c spH.h $(LIBS)

spC.o    : spC.c soapH.h stdsoap2.h 
    $(CC) $(LDFLAGS) $(CFLAGS) -c spC.c stdsoap2.h $(LIBS)

Client.o    : Client.c 
    $(CC) $(LDFLAGS) $(CFLAGS) -c Client.c $(LIBS)

std2.o    : std2.c
    $(CC) $(LDFLAGS) $(CFLAGS) -c stdsoap2.c $(LIBS)

OBJS= calc.o spC.o Client.o std2.o

all: $(OBJS)
    $(CC) $(LDFLAGS) $(CFLAGS) $(SHELL) -o $@ $(OBJS) $(LDLIBS)


clean:
    -rm -f $(OBJS) *.gdb *.o

我收到这样的错误:

Critical error: Cannot open file "arm-uclinuxeabi-gcc -mcpu=cortex-m3 -mthumb -L/home/am./../../linux-lpc-1.9.0/linux-cortexm-1.9.0/A2F/root/usr/include -c calc.c spH.h " for reading

我尝试了多种方法但没有结果。

我该如何修复这个错误?

使用 ,包括选项编译多个源文件是否有问题arm-ulinucxeabi-gcc -o -c

例如:

arm-ulinucxeabi-gcc -c -o a a.c b.c c.c d.c

当我这样使用时,出现上述错误。请指导我解决这个问题。

答案1

当您make使用该 makefile 运行时,默认目标是out,第一个先决条件是calc.o,该目标的构建行就是您的错误中的内容。

似乎正在发生的情况是,整个构建行都由 shell 执行,就好像被引用一样 - 但事实并非如此,正常情况下sh不会这样做。

但您可能没有使用符合sh兼容条件的东西:

SHELL=cpp2

重新定义它(它已经在环境中定义)意味着cpp2正在使用,并且显然它的行为不正确。

相关内容