2014-10-10 112 views
1

所以我的任务基本上要求做一个Makefile来将sorted-list.c实现编译到名为libsl.a的库中,并且一个名为sl的可执行文件运行代码在main.c中。基本的makefile /链接/库的问题:没有这样的文件或目录

所以我迄今写:

cc=gcc 

sl : main.o sorted-list.o 
    cc -o -g sl main.o sorted-list.o 

main.o : main.c sorted-list.h 
sorted-list.o : sorted-list.c sorted-list.h 

ar : rcs libsl.a sorted-list.o 

clean : 
    rm sl main.o sorted-list.o 

在包含我的所有文件,以及文件makefile文件的目录,我输入到终端:

make 

现在,这是我第一次做所有这些,所以我只能假定它已经按照我的意图执行了。如果没有,请让我知道。话虽这么说,我得到以下错误:

-bash-4.1$ make 
cc -c -o sorted-list.o sorted-list.c 
cc -o -g sl main.o sorted-list.o 
cc: sl: No such file or directory 
make: *** [sl] Error 1 

#2有以下问题:
Makefile is giving me an error - No such file or directory

这似乎是最接近的问题/解决方案,但我可执行SL似乎被放置正确的(直接在旗帜之后),如答案所示。我不确定这是否重要,但我没有任何名为sl的提交/目录 - 根据我的理解,这将是尚未创建的可执行文件的名称。

回答

0

您必须将可执行文件的名称紧接在-o选项后面,因为它是此选项的参数。所以

cc -g -o sl main.o sorted-list.o 

,而不是

cc -o -g sl main.o sorted-list.o 

cc(1)的手册页应该读这样的事情:

 
-o output 
    Name the output of the compilation output instead of a.out. 

这表明你的可执行文件的名称是一个参数来-o选项因此必须在-o选项后立即出现。

有关更多详细信息,请阅读手册cc(1)

相关问题