如何在Mac OS X终端上使用make编译C程序

Rap*_*ner 9 c macos terminal makefile

我最近买了一台Macbook Pro,我想用终端在C中做一些编码.

我可以用这个命令编译代码:

gcc filename.c –o filename
Run Code Online (Sandbox Code Playgroud)

但我想用make命令编译它,因为我知道这是最佳实践,我想遵循最佳实践.

make filename cc filename.c -o filename
Run Code Online (Sandbox Code Playgroud)

这个命令给我以下输出:

make: Nothing to be done for `ex01'.
make: *** No rule to make target `cc'.  Stop.
Run Code Online (Sandbox Code Playgroud)

请注意,我已经安装了Xcode和Xcode开发人员命令行工具,在/ usr/bin文件夹中,我看到了makemakefile属性.

有没有人有任何提示我应该怎么做才能用makefile和cc参数编译?

Dav*_*eri 14

Makefile使用此内容创建在同一路径上调用的文件:

CC = cc
CFLAGS = -std=c99 -pedantic -Wall
OBJECTS = filename.o

all: appname

filename.o: filename.c
    $(CC) $(CFLAGS) -c filename.c

appname: $(OBJECTS)
    $(CC) $(OBJECTS) -o appname

clean:
    rm -f *.o appname
Run Code Online (Sandbox Code Playgroud)

然后运行:

make
Run Code Online (Sandbox Code Playgroud)

当然,请替换appname为您的程序名称

注意:之前必须有"标签"(不是空格)

$(CC) $(CFLAGS) -c filename.c
Run Code Online (Sandbox Code Playgroud)

$(CC) $(OBJECTS) -o appname
Run Code Online (Sandbox Code Playgroud)


小智 5

我正在按照相同的教程,遇到类似的问题.

我不知道你究竟做了什么,但我认为错误是错误的命令.你键入了make filename cc filename.c -o filename,但教程指示我们使用make filename,没有cc filename.c -o filename部分.也许你读过一个旧版本?

并且,make filename工作正常,您不需要Makefile.


仅供参考,以下是我遇到问题以及如何解决问题的方法:

  1. 键入下面的代码,并将其保存在名为"ex1"的文件中

     int main(int argc, char *argv[])
     {
         puts("Hello world.");
    
         return 0;
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 输入make ex1终端
  3. 收到错误信息 make: Nothing to be done for 'ex1'.

如您所见,我的错误是源代码的文件名应该是ex1.c,而不是ex1.

当我将文件名更改为ex1.c并执行时make ex1,它工作正常.