-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ことを意味し、明らかに正しく機能しません。

関連情報