2013-02-25 63 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