我正在编译多个依赖于多个头文件的 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
正在使用,并且显然它的行为不正确。