gpt4 book ai didi

c - 在linux终端编译C代码时,make 和cc 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 20:50:48 26 4
gpt4 key购买 nike

我是 C 语言新手,我知道这两个命令都完成相同的任务,但是其中一个命令是否会执行与另一个命令不同的操作?

最佳答案

首先,如果您使用 make,那么对于 hello.c,您将调用 make 作为 make hello 而不是 制作 hello.c。另请注意,make 大多数情况下与 Makefile 一起使用。尽管如此,您可以使用 make 从单个源文件构建可执行二进制文件,如您所示。

如果可执行文件 (hello) 不存在,则两者将具有相同的效果 - 从源文件创建可执行文件。

但是,如果可执行文件已存在,则仅当 make 认为源代码在上次构建后已更改时才会运行构建命令,而 cc 将始终进行构建。

例如:

$ make hello
cc hello.c -o hello
$ make hello
make: 'hello' is up to date. # make does not think source file has changed
$ touch hello.c # Update the timestamp of hello.c
$ make hello
cc hello.c -o hello # make thinks source file changed. Builds again
$

但是,cc 不会检查源是否已更改。它总是会执行所需的构建。

$ cc hello.c -o hello
$ ls -l hello | cut -d ' ' -f '8-'
12:18 hello
$ cc hello.c -o hello # Build again without changing source
$ ls -l hello | cut -d ' ' -f '8-'
12:21 hello # hello was built again
$

以上描述适用于 GNU makeGNU cc。不确定其他实现。

P.S.:make 不是编译器。它仅在它认为应该调用编译器时才调用编译器,如上面的示例所示。而 cc 是一个编译器。

P.S. 如果您运行 cc hello.c,则可执行文件名为 a.out,而不是 hello >.

关于c - 在linux终端编译C代码时,make <filename>和cc <filename>有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com