簡體   English   中英

Makefile:目標文件“無此文件或目錄”

[英]Makefile: “No such file or directory” for target file

首先,我應該承認makefile是我非常缺乏經驗的東西,因此,如果這是我本應能夠解決的錯誤,我深表歉意,但是我為此花了幾個小時,包括閱讀有關此問題的各種答案。網站,並且無法找到解決方案。

話雖如此,我已經創建了以下makefile在Linux機器上編譯我的代碼; 它可以很好地完成子編譯,但是在制作輸出本身xPlatST時,會引發錯誤。

g++ -std=c+=11 -g -Wall -pthread -c -o xPlatST.o xPlatST.cpp
g++ -std=c+=11 -g -Wall -pthread -c -o stdafx.o stdafx.cpp
g++ -std=c+=11 -g -Wall -pthread -c xPlatST xPlatST.o stdafx.o -L../hwloc
g++ error: xPlatST: No such file or directory
make: *** [xPlatST] Error 1

我相信似乎認為xPlatST是它的編譯文件之一,因此找不到它,但是對於我一生,我無法弄清楚為什么。

hwloc是第三方庫,應該與此問題無關。 直接從命令行編譯時,代碼編譯就很好。

我的文件是xPlatST.cpp,xPlatST.h,stdafx.cpp,stdafh.h

代碼如下:

CXX = g++ -std=c++11
INCLUDES =
LIBS = -L../hwloc 
CXXFLAGS = -Wall -g -pthread
OBJS = xPlatST.o stdafx.o

xPlatST: ${OBJS}
    ${CXX} ${CXXFLAGS} ${INCLUDES} -c $@ ${OBJS} ${LIBS}

clean:
    -rm xPlatST *.o

任何幫助將不勝感激; 先感謝您。

您的假設是正確的。 您的食譜正在嘗試使用xPlatST作為來源。 在規則中將-c更改為-o

${CXX} ${CXXFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS}

-c標志告訴編譯器獲取所有文件,進行編譯,然后將它們組合為目標文件( .o )。 -o標志指定目標文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM