我有一個帶有一些示例的 SDK,但是當我想編譯這些示例中的任何一個時,我收到此錯誤:
cc -g -I -o this_example.o -c this_example.c
cc: error: this_example.o: No such file or directory
make: *** [Makefile:15: this_example.o] Error 1
這是生成檔案:
CC ?= gcc
INC_PATH ?= $(realpath ../inc)
LIB_PATH ?= $(realpath ../lib)
LIBS ?= $(wildcard $(LIB_PATH)/*.a) -pthread -lrt -lm
LDFLAGS :=-g -L$(LIB_PATH)
CFLAGS =-g -I$(INC_PATH)
EXAMPLES=sdk_this_example_folder
.PHONY: all
all: $(EXAMPLES)
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
this_example: this_example.o frozen.o
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) -Wl,-rpath,'$$ORIGIN/../../lib'
clean:
rm -f *~ *.o $(EXAMPLES)
在this_example_folder 中,我有四個檔案:Makefile、this_example.c 和frozen.c 和frozen.h。問題出在哪兒?謝謝大家的幫助!
uj5u.com熱心網友回復:
realpath如果您要擴展的路徑不存在,該函式將回傳空字串。
你有:
INC_PATH ?= $(realpath ../inc)
然后:
CFLAGS =-g -I$(INC_PATH)
你的命令輸出是:
cc -g -I -o this_example.o -c this_example.c
顯然,的值為INC_PATH空(因為-I命令列中的之后沒有任何內容),這意味著該目錄../inc不存在。
至于為什么會失敗:該-I選項之后需要一個檔案名。由于您沒有,它使用-o(命令列中的下一個詞)作為檔案名。這意味著它this_example.o被視為要編譯的檔案,而不是輸出檔案,當然它不存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322569.html
下一篇:關于指標在C中如何作業的問題
