如何在Mac OS X上使用终端运行C程序?

118

我是C语言的新手。这是我的“Hello, World!”程序。

#include <stdio.h>

int main(void)
{
  printf("Hello, World!\n");
  return 0;
}

在我尝试使用终端运行它后,它会显示:

/Users/macbook/Desktop/peng/Untitled1

-bash: /Users/macbook/Desktop/peng/Untitled1: Permission denied

为什么?


3
请参考以下链接:如何在Mac上编译C文件 - Mark Plotnick
"Untitled1" 文件是什么?这个文件是否包含了你在问题中提到的源代码,还是其他内容? - pasaba por aqui
pintf 替换为 printf,保持 int 和 main 在同一行。 - Walter A
10个回答

215

首先将您的程序保存为program.c

现在,您需要编译器,因此您需要前往App Store并安装Xcode,这是Apple的编译器和开发工具。如何找到App Store?通过执行“聚光灯搜索”,即键入空格键并开始键入App Store,然后在正确猜测时按下Enter键。

App Store看起来像这样:

Enter image description here

XcodeApp Store中如图所示:

Enter image description here

接下来,您需要在终端中安装命令行工具。如何启动终端?您需要执行另一个“聚光灯搜索”,也就是键入空格键并开始键入Terminal,然后在正确猜测时按下Enter键。

现在像这样安装命令行工具:

xcode-select --install

然后你可以通过简单地运行gcc来编译你的代码,就像下一行中所示,而不必启动名为Xcode的大而丑陋的软件开发GUI界面:

gcc -Wall -o program program.c

注意:在较新版本的 OS X 上,您需要使用 clang 代替 gcc,如下所示:

clang program.c -o program

然后您可以使用以下命令运行它:

./program
Hello, World!

如果你的程序是C++,你可能会想要使用以下其中一条命令:

clang++ -o program program.cpp
g++ -std=c++11 -o program program.cpp
g++-7 -std=c++11 -o program program.cpp

6
执行命令gcc -Wall -o program program.c,你将获得一些有用的编译器警告(虽然不是全部),这将告诉你代码未正常工作的一些原因。请注意,不要改变原意。 - Schwern
不错的回答,但请注意没有必要显式地调用clang - gcc已经链接到clang了。 - Paul R
1
cc 则是两者的符号链接 - 这就是我需要输入的全部内容。 - Steve Summit

64

首先确保您正确地修改了程序:

#include <stdio.h>

int main(void) {
   printf("Hello, World!\n"); //printf instead of pintf
   return 0;
}

将文件保存为HelloWorld.c,然后在终端中输入:

gcc -o HelloWorld HelloWorld.c

之后,只需按照以下方式运行可执行文件:

./HelloWorld

你应该看到Hello, World!


8
最好将文件保存为“Untitled.c”。更好的做法是使用一个更有意义的文件名。 - Jongware

17

"C程序"并不是用来直接运行的,它需要被编译成一个可执行程序,然后才能从终端运行。你需要使用一个编译器来完成这个过程。

哦,关于你上一个问题的答案(“为什么?”),是因为你正在尝试执行的文件没有设置可执行权限(编译器通常会自动将二进制文件设置为可执行文件,由此我们可以推断出你正在尝试将源代码作为脚本运行,因此提示你需要先编译)。


5
“C程序”不应该被运行。 - Eddie
我认为对于这个SO问题的一个合理回答应该包括如何编译和执行用C语言编写的程序的说明。这个回答没有包含任何这样的说明,因此我会给它点个踩。如果您不同意,请告诉我。 - Alex
Alex,你可以随意添加另一个答案。 - gnasher729

17

这还适用于2019年

默认情况下,您可以使用终端编译您的name.c

 cc name.c

如果你需要奔跑,只需写下来

 ./name.out

3
无论名称是什么,它都显示为"a.out",而不是"f{name}.out"。由于某种原因,它始终是"a"。 - Flaming_Dorito
1
@Flaming_Dorito,这是创建可执行对象文件的默认行为。但是你可以选择给它一个你喜欢的名字。 命令类型 -> cc -o 名称 名称.c - Yash Tamakuwala
@YashTamakuwala 哦,我明白了。谢谢 - Flaming_Dorito
使用 cc 是不寻常的。可能它是某种别名。也许可以添加一个原因和来源(例如,一些标准文档)?(但是不要包括“编辑:”,“更新:”或类似内容 - 答案应该看起来像是今天写的。) - Peter Mortensen
cc 可在OSX Monterey上运行。 which cc 告诉我 /usr/bin/cc,而 file /usr/bin/cc 则显示 /usr/bin/cc: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64 [...] - Antonio

7
为了完成这个任务,需要进行以下操作:
  1. 打开终端

  2. 在终端中输入:nano,这是一个可用于终端的文本编辑器。当你这样做时,会出现类似下面的内容。

  3. 在此处可以输入C程序

  4. 按下 Ctrl + X → 表示退出。

  5. 输入 Y 保存文件

  6. 输入文件名;例如,helloStack.c(不要忘记添加.c

  7. 当出现提示时,输入 gcc helloStack.c

  8. 然后输入 ./a.out:这应该会给你你想要的结果!


在“something like this would appear”附近似乎缺少了一些东西。是想要截图吗?还是其他什么东西? - Peter Mortensen

4

如果要在最新的macOS上编译C程序,只需在终端中键入以下命令,并保存带有 .c 扩展名的文件并到达文件保存路径即可:

cc yourfilename.c

编译后检查所有错误(如果有),输入以下内容以执行代码:

./a.out

这些命令在macOS v10.14(莫哈维)上进行了测试,完美有效。

3
要在macOS上编译C程序,只需按照以下步骤进行:
使用终端中的“cd”命令进入您的C程序位置,然后输入下面的命令:
make filename

然后输入
./filename

0
答案是chmod 755 hello - 它使文件可执行... 我在macOS上遇到了同样的问题,现在已经解决了。
nano hello.c
make hello
chmod 755 hello

然后你可以通过 ./hello 运行它。
clang --version

输出:

Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0

没有安装任何东西。nano make (clang) chmod - 在 macOS 中已经存在。


最后一句话的目的是什么?你能详细说明吗?最好通过编辑(更改)你的答案来解释。 - Peter Mortensen

0
在Mac上,GCC(可执行文件gcc)默认安装在/usr/local/bin中。
运行C的方法:
gcc -o tutor tutor.c

关于“运行C”:您是不是指“编译”或“运行GCC”?还是指“编译C程序”?请通过编辑(更改)您的答案来回复,而不是在评论中回复(不要包含“编辑:”,“更新:”或类似内容 - 答案应该看起来像是今天写的)。 - Peter Mortensen
实际上不是这样的。GCC 已经很久没有成为 Xcode 的一部分了,但是 Clang 是。如果您尝试调用 GCC,那么会有一个别名来调用 Clang。 - gnasher729

-2
  1. 首先,您需要为Mac安装GCC编译器(在互联网上搜索并安装)

  2. 记住您存储C文件的路径

  3. 打开终端并设置路径

    例如,如果您将其保存在“文档”文件夹中的新文件夹“ProgramC”中。

    然后在终端中输入:

    cd Document
    cd ProgramC
    
  4. 现在您可以看到您正在保存C程序的文件夹中(假设您将程序保存为“Hello.c”)

  5. 现在编译您的程序

    make Hello
    ./hello
    

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