若要在 Mac 的终端中编译并运行 C 源代码,你首先需要安装 Command Line Tools,里面包含有 GCC 编译器。安装方法为:
打开终端,输入 gcc。
如果你没有安装 Command Line Tools,会弹出一个窗口提示你安装,如图所示,点击安装即可。如果出现提示“no input files”,说明你已经安装了 gcc 编译器,可以直接开始编译程序。
安装完成后,定位至你需要编译的 C 源代码所在目录,即使用 cd 命令,例如我现在在根目录下,我的 C 代码位于 ——/Desktop/Self/C 文件夹中,我便可以在终端中输入以下命令,来跳转到我 C 代码的文件夹:
cd Desktop/Self/C
效果如图:
如果觉得输入文件夹地址比较繁琐,还有一种简单的方法,就是输完 cd 后在 Finder 中找到你的文件夹,直接把它拖到终端里,系统会自动生成这个文件夹的地址。
定位完成后,就可以开始编译了。例如,我要编译的文件叫 dot.c,那么就在终端中输入
gcc -Wall -g -o dot dot.c
其中,-Wall 代表编译器在编译过程中会输出警告信息(Warning),比如有些变量你并没有使用,指针指向的类型有误,main 函数没有返回整数值等。这类信息虽然不是错误,不影响编译,但是很可能是程序 bug 的源头,也有助于你寻找代码中的错误,规范代码格式。所以建议每次编译时都加上 -Wall 参数。
-g 代表编译器会收集调试(debug)信息,这样如果你的程序运行出错,就可以通过 gdb 或者 lldb 等工具进行逐行调试,方便找出错误原因。如果你不是百分之百确定你的程序毫无问题,建议加上 -g 参数。这样 debug 的时候会方便很多。
-o 代表编译器会将编译完成后的可执行文件以你指定的名称输出到你指定的文件夹下。-o 的空格后的名称就是输出的文件的名称。例如我这里 -o 后是 dot,就是说 gcc 会在编译成功后在我的当前目录下生成一个叫 dot 的可执行文件。如果不加这个参数,每次编译后生成的可执行文件都会放在根目录下,名字叫做 a.out。每次编译成功后都会把上一次的 a.out 文件覆盖。所以建议加上 -o 参数,这样可以更加条理。
最后一项便是你要编译的的源代码的名称了。我这里是 dot.c。注意加上后缀 .c。
输入完毕后按回车,如果编译没有任何问题,不会有任何提示。如果有问题,编译器会提示你问题是什么,在源代码的什么位置。如图所示:
如果编译成功,你会发现在你的当前目录下多出了一个可执行文件,图标如图所示:
在终端中输入 ./可执行文件的名称 即可执行你的程序。例如,我输入
./dot
后,就可以执行程序了。如果提示你 Permission Denied,则是因为你没有赋予这个文件执行权限,需要在终端里输入
chmod u+x dot (这里是你自己的文件名)
来使其可在你的账户下执行。
如果运行时出现 Segmentation Fault,则说明你的代码里有 bug 导致程序崩溃。