여러 헤더 파일에 의존하는 여러 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
여러 가지 방법을 시도했지만 결과가 없었습니다.
이 오류를 어떻게 해결할 수 있나요?
include 옵션을 사용하여 여러 소스 파일을 컴파일하는 데 문제가 있습니까 arm-ulinucxeabi-gcc -o -c
?
예를 들어:
arm-ulinucxeabi-gcc -c -o a a.c b.c c.c d.c
이렇게 사용하면 위와 같은 오류가 발생합니다. 이 문제를 해결하도록 안내해 주세요.
답변1
이 makefile을 사용하여 실행 하면 make
기본 대상은 이고 out
첫 번째 전제 조건은 입니다 calc.o
. 해당 대상의 빌드 라인은 오류에 있는 것입니다.
일어나고 있는 것처럼 보이는 것은 전체 빌드 라인이 마치 인용된 것처럼 쉘에 의해 실행된다는 것입니다. 그러나 이는 사실이 아니며 sh
정상적으로 수행되지 않습니다.
sh
하지만 아마도 호환되는 것을 사용하고 있지 않을 것입니다 .
SHELL=cpp2
이를 재정의한다는 것은(이미 환경에 정의되어 있음) 해당 항목이 cpp2
사용되고 있음을 의미하며 분명히 올바르게 작동하지 않습니다.