2013-02-25 65 views
2

我應該爲我需要做的項目編寫一個Makefile。我把它全部完成,但是當我嘗試這樣做,我得到下面的輸出:沒有什麼可以做的「Makefile」

化妝:沒有爲`Makefile」的

可能是什麼的這個事業做?

這是我的Makefile文件:

########################################################### 
# Makefile for XXXXX 
# name1, name2 
# account1, account2 
########################################################### 
EXEC = a1 
CC = /opt/SUNWspro/bin/cc 
$(EXEC): 
    $(CC) -o $(EXEC) a1.cpp a1.h a1.sic 
    rm -f *.o 
clean: 
    rm -f *.o core diss $(EXEC) 
#######################[ EOF: Makefile ]################### 

編輯: 多虧了一種用戶,現在我知道發生了什麼。

現在我有以下輸出

/opt/SUNWspro/bin/cc -o a1 a1.cpp a1.h a1.sic 
ld: fatal: file a1.cpp: unknown file type 
ld: fatal: file processing errors. No output written to a1 
make: *** [a1] Error 2 

能否請你幫忙嗎?

+0

您試圖用C編譯器編譯C++代碼;這不起作用。使用C++編譯器,可能是'/ opt/SUNWspro/bin/CC'(全部大寫)。您通常不會在編譯器命令行中列出頭文件。我不確定誰知道'.sic'文件是什麼。 – 2013-02-25 07:10:10

+0

教授要求我們把每個文件。 '.sic'文件是用於我們正在使用的彙編程序。 – 2013-02-25 07:29:26

+1

那麼,如果'.sic'文件被翻譯好了,沒問題。 '.h'文件可能不應該在命令行上。它有可能被識別並且變得無害,但是如果'a1.h'的文件類型無法識別出現問題,那麼你知道它並不正確。我沒有見過'.sic'用於彙編程序。如果Sun編譯器識別它,太好了。如果沒有,你還需要在makefile中做更多的工作(可能會增加將'.sic'彙編程序轉換爲'.o'目標文件的規則。 – 2013-02-25 08:12:51

回答

5

由於某種原因你打字make Makefile?別。只需輸入makemake a1或也適用於您的情況,但爲什麼還要打字?

另外,在編譯行中包含頭文件有點奇怪。此外,你的makefile沒有指定任何依賴關係,這是首先有一個的全部理由...

編輯:爲了回答你的新問題,不要用C編譯器編譯C++代碼。這就是說,我不確定你得到的鏈接錯誤。 a1.cpp是不是一個正常的源文件(找出file a1.cpp類型)?

看起來好像你有非常基本的問題。也許從一本好的初學者書開始會很有用?

+0

請原諒我的無知,但這裏的依賴是什麼? – 2013-02-25 07:02:56

+2

查看'make'手冊。它包含了你需要知道的一切。 – 2013-02-25 07:06:45

+0

由於C編譯器不知道該怎麼做'.cpp'文件(或'.h'文件或'.sic'文件)將它們傳遞給加載程序而不進行編譯。加載程序不知道如何處理它們,並抱怨它沒有知道'.cpp'文件是什麼。 – 2013-02-25 07:12:55