如何在Mac OS X上编译和运行C程序

37
我正在学习C语言,并希望在Mac上(运行OS X v10.7(Lion))使用文本编辑器编写程序。我编写了.c文件,并使用gcc filename.c进行编译,生成可执行文件a.out。但是,当我键入a.out/a.out时,出现以下消息:

“-bash:a.out:命令未找到” 或 “-bash:/a.out:没有那个文件或目录”。

之前我曾经在Linux系统上成功地使用相同的方法编译和运行C程序。我在Mac上做错了什么?

7个回答

59

你需要在可执行文件名前加一个点来指示该文件在当前目录中,因为当前目录不在系统路径中:

./a.out

3
@JTWheeler,你也可以考虑给你的目标文件命名,这样在手动编译多个C程序时就不会覆盖a.out。执行 gcc myprog1.c -o myprog1.o 命令,并通过 ./myprog1.o 来运行它。这只是一个建议。作为另一种选择,你可以使用clang代替gcc来练习你的代码,因为它提供更好的错误详细信息。 - Bharat

18

您需要在 a.out 前加上 ./,如下所示:

./a.out

此外,您可能会发现更改生成的可执行文件名称很有用。例如:
gcc nameofprogramyouwrote.c -o whatyouwanttheprogramtobenamed

然后像这样执行它:

./whatyouwanttheprogramtobenamed

6

构建:

    gcc -Wall -o yourFile yourFile.c

然后执行:
    ./yourFile

一直想知道如何生成与C文件同名的可执行文件。+1 - Priyank Thakkar

6

您需要在斜杠前面添加一个点:

./a.out

/a.out会尝试在根文件夹(/)中执行程序。
a.out将在PATH环境变量定义的所有文件夹中查找您的程序。

我以前使用相同的方法成功地在Linux系统上编译和运行C程序。我在我的Mac上做错了什么?

您在Linux上需要做同样的操作。


4

请确保使用 chmod +x a.out 命令将执行权限设置为可执行。


5
gcc会为您完成这项操作,不需要运行chmod。 - benjarobin
1
正确,但这是一个好的实践,因为并不是每个人都在使用gcc。 - MichaelM
这与 chmod 777 a.out 有什么不同吗? - Lucas
是的,chmod 777会使得系统上所有拥有访问权限的人都能够执行、读取、写入和删除该文件。 - MichaelM
chmod 777chmod 755chmod 744可能更接近,但u+x更好。 - Peter Mortensen

0

你需要一个编译器。然而,最简单的方法是安装Xcode。这样你就可以访问GCC

因此,

gcc -o mybinaryfile mysourcefile.c

然后像这样运行它。

./mybinaryfile

0

但是你忘记了那个点号。

./a.out

如果./a.out不能工作,你也可以使用cmake将你的C程序编译成二进制文件!


1
你的回答的第一部分已经在9年前得到了多次赞同。第二部分没有意义。a.out已经是一个二进制文件了。而且cmake对此没有任何影响。请在回答旧问题时,确保带来之前未提供的新信息。 - chrslg

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