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

时间:2014-10-16 16:42:46

标签: c macos terminal makefile

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

我可以使用以下命令编译代码:

gcc filename.c –o filename

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

make filename cc filename.c -o filename

这个命令给我以下输出:

make: Nothing to be done for `ex01'.
make: *** No rule to make target `cc'.  Stop.

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

有没有人知道我应该怎么做才能用makefile和cc参数编译?

3 个答案:

答案 0 :(得分: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

然后运行:

make

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

注意:

之前必须有“标签”(不是空格)
$(CC) $(CFLAGS) -c filename.c

$(CC) $(OBJECTS) -o appname

答案 1 :(得分:5)

我正在关注相同的tutorial,并遇到了类似的问题。

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

并且make filename工作正常,You don't need a Makefile

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

  1. 输入以下代码,并将其保存在名为" ex1"

    的文件中
     int main(int argc, char *argv[])
     {
         puts("Hello world.");
    
         return 0;
     }
    
  2. 在终端
  3. 中键入make ex1
  4. 收到错误消息make: Nothing to be done for 'ex1'.
  5. 正如您所看到的,我的错误是源代码的文件名应为 ex1.c ,而不是 ex1

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

答案 2 :(得分:0)

enter image description here

make [FileName]

./[FileName]

如果文件名为 test.c 并保存在桌面中,则命令为:

cd Desktop

make test

./test