【问题标题】:How to compile a C program with make on Mac OS X Terminal如何在 Mac OS X 终端上使用 make 编译 C 程序
【发布时间】:2014-12-12 03:06:53
【问题描述】:

我最近买了一台 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 中,我看到了 ma​​kema​​kefile 属性。

有人对我应该怎么做才能使用 makefile 和 cc 参数进行编译有任何提示吗?

【问题讨论】:

    标签: c macos terminal makefile


    【解决方案1】:

    make [FileName]
    
    ./[FileName]
    

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

    cd Desktop
    
    make test
    
    ./test
    

    【讨论】:

      【解决方案2】:

      我关注的是同一个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. 在终端输入make ex1
      3. 收到错误消息make: Nothing to be done for 'ex1'.

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

      当我将文件名更改为 ex1.c 并执行 make ex1 时,它起作用了。

      【讨论】:

        【解决方案3】:

        在同一路径上创建一个名为 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
        

        【讨论】:

        • 感谢 Alter Mann 解决了我的问题我现在很乐意享受终端中的编码。只是另一个问题,即使它解决了它,你知道为什么这不起作用 .make 文件名 cc 文件名。 c -o filename 是不是 MacO 不支持它,或者是一些配置问题,或者它只是不是这样做的方式?
        • @bigpop 该命令行语法不受任何make 的支持,无论何时何地,任何系统。不知道你从哪里得到它,但无论你从哪里得到它,你都应该避免在未来将其用作参考。另外,我不明白答案 [there must be a] blank line before 变量赋值中的语句:据我所知,没有要求。
        • @MadScientist 是的,你是对的,我不会使用它,我只是对这个 :s 有点困惑。无论如何感谢您的解释,感谢它:)。
        猜你喜欢
        • 2015-11-27
        • 2011-07-08
        • 1970-01-01
        • 2018-07-12
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多