-o -c 옵션을 포함하여 arm-ulinucxeabi-gcc를 사용하여 여러 소스 파일 컴파일

-o -c 옵션을 포함하여 arm-ulinucxeabi-gcc를 사용하여 여러 소스 파일 컴파일

여러 헤더 파일에 의존하는 여러 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사용되고 있음을 의미하며 분명히 올바르게 작동하지 않습니다.

관련 정보