make和gcc有什么区别?

44
在该文章的最后一个句子引起了我的注意。
引用:
“对于C/C++开发人员和学生,他们有兴趣学习如何使用C/C++编程而不是Linux用户。这是因为在GNU/Linux中通过使用'make'命令使源代码的编译变得简单。”
我一直使用gcc来编译我的C/C++程序,而javac来编译我的Java程序。我只使用make命令通过configure / make / make install安装程序到计算机上。
看起来你可以用make命令来编译所有程序。
“make”和“gcc”有什么区别?

需要注意的是,javac 包含一些基本的依赖关系解析功能,即它也是一个简单的 make 工具。它会递归查找其他类使用的(源代码)类,并在需要时编译它们,即使它们没有被作为参数提及。C 编译器或链接器不会这样做,部分原因是对象文件或库与源代码之间的联系不能像 Java 中那样推断出来,因为物理文件名和路径对应于逻辑类名和包名。 - Peter - Reinstate Monica
12个回答

1

0
让我们以gcc编译器为例。它只知道如何将给定的.cpp文件编译成.o文件,前提是编译所需的文件(例如.h文件)已经准备好了。
然而,这些依赖关系会形成一个图形。例如,b.o在编译过程中可能需要a.o,这意味着它需要先独立编译。
作为程序员,你想跟踪所有这些依赖关系并按顺序运行它们来构建目标.o文件吗?
当然不想。你希望有些工具可以帮助你完成这项任务。
这些就是构建工具 - 帮助简化构建过程(即构建像.o文件这样的构件)的工具。其中一个工具是make
我希望这样可以澄清区别 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接