那么导出是什么:StackImplementation.o呢?比如将它导出到哪里? 另外,gcc -l在做什么?我用谷歌搜索了它,然后用#c; gcc -l链接了一个库文件"。什么链接到库文件? 最后,"将您选择的打印命令替换为低于"意思?什么是lpr呢?什么是干净的:rm -f * .o?
答案 0 :(得分:1)
export
是虚假目标的名称。你可以说
% make export
make将构建其依赖项。没有指定如何将依赖项转换为名为export的文件的操作,如果没有隐式规则,make将在构建依赖项后停止。
-I
到gcc正在添加搜索包含文件的路径。您将它与-l
选项混淆,后者指定要链接的库的名称(可以满足未解析符号的预先构建的目标文件集合)。
lpr
命令将文件发送到默认行式打印机。同样,print
是一个虚假的目标;做
% make print
将源文件发送到打印机。
大多数makefile包含一个clean
规则来删除生成的文件。在未正确指定依赖项时,必须更改源文件不会导致构建目标。 rm
命令是删除的简称;它删除文件。如果你这样做
% make clean
它将强制删除所有以.o
结尾的文件。
这些目标中的大多数都是虚假的,并且如果恰好存在具有比其依赖项更新的名称的文件(如果有的话),则将无法正常工作。大多数允许您通过将它们列为超级虚假.PHONY
目标的依赖关系来指定哪些目标是假的。然后,Make将忽略文件系统,并始终应用规则。
答案 1 :(得分:1)
export:
这是一个名为" export"并且是makefile中的第一个目标,因此如果在命令行上没有指定目标,它将默认被调用。我不清楚为什么叫它" export"但那是有人为之选择的名字
export: StackImplementation.o
这表示导出依赖于StackImplementation.o,因此在调用导出时它将调用目标StackImplementation.o
StackImplementation.o: StackImplementation.c ...
StackImplementaiton.o取决于源文件StackImplementation.c和列出的包含文件。这将运行gcc,其中包含标志-I ../ Include,它告诉gcc在相邻目录中包含.h文件"包括"
# substitute...
这是一个注释,表示如果你想
将打印命令lpr更改为其他打印命令clean:
这是一个使用-f选项删除目标文件的常见目标,即使未设置写权限也强制删除
答案 2 :(得分:0)
1)lpr提交要打印的文件。命令行中命名的文件将发送到指定的打印机 (如果未指定目标,则为默认目标)。如果没有列出的文件 mand-line,lpr从标准输入读取打印文件。
有关" lpr"的更多信息使用linux的用户手册。
2)gcc -l链接外部库到你的程序,如果有任何依赖。
示例:
gcc hello.c -o hello -lpthread -ldrm -ldrm_omap
clean:
rm -rf *.o
这里clean是make的规则,当我们调用make clean时,它会调用rm -rf * .o来删除所有目标文件。