[c]Mac系统下编译c文件生成可执行程序

2017-11-07  本文已影响560人  叨码

编译环境:macOS 10.12.2
编译工具:Sublime + gcc.
例如有如下文件echo_eof.c:

#include<stdio.h>
/* echo_eof.c -- 重复输入,直到文件结尾 */
int main(void){
    int ch;

    while((ch=getchar())!=EOF){
        putchar(ch);
    }
    return 0;
}

编译方法:
cd到当前目录,执行:

$ gcc -Wall -g echo_eof.c
$ ./a.out

-Wall 代表编译器在编译过程中会输出警告信息(Warning),这类信息虽然不是错误,不影响编译,但是很可能是程序 bug 的源头,也有助于你寻找代码中的错误,规范代码格式。建议每次编译时都加上 -Wall 参数。

-g 代表编译器会收集调试(debug)信息,这样如果你的程序运行出错,就可以通过 gdb 或者 lldb 等工具进行逐行调试,方便找出错误原因。如果你不是百分之百确定你的程序毫无问题,建议加上 -g 参数。这样 debug 的时候会方便很多。

以上就是编译过程。
如何将编译后的文件生成可执行文件,方法如下:

gcc -o echo_eof echo_eof.c (其中不带.c后缀的 echo_eof就是你要生成的可执行文件名)

-o 代表编译器会将编译完成后的可执行文件以你指定的名称输出到你指定的文件夹下,-o 的空格后的名称就是输出的文件的名称。例如我这里 -o 后是 echo_eof,就是说 gcc 会在编译成功后在我的当前目录下生成一个叫 echo_eof 的可执行文件。如果不加这个参数,每次编译后生成的可执行文件都会放在根目录下,名字叫做 a.out。每次编译成功后都会把上一次的 a.out 文件覆盖。

因此,如果想编译和生成运行目标文件一步到位的话,直接执行:

gcc -Wall -g -o echo_eof echo_eof.c 

生成的目标文件如何运行呢,很简单 把上面的./a.out中a.out替换成你的目标文件即可,也就是:

./echo_eof  (如果需要参数,后面空格跟参数)
上一篇下一篇

猜你喜欢

热点阅读