gcc 简单使用

c 代码的编译主要分为 4 个阶段:预处理、编译、汇编、链接;使用 gcc 可以帮助我们完成每个阶段;

简单 c 代码 test.c:

#include <stdio.h>

int main(void)
{
    printf("Hello world!");
    return 0;
}

###gcc 命令用法简单说明

  1. 最简单编译链接 .c 文件命令

    $ gcc test.c

    将 test.c 编译链接为可执行文件,由于未制定输出文件名,默认生成可执行文件 a.out;

    $ ./a.out Hello world!

  2. 指定输出文件名选项 -o

    $ gcc test.c -o test

  3. 预处理选项 -E

    $ gcc -E test.c -o test.i

    预处理 test.c 后输出到 test.i 中;

  4. 汇编选项 -S

    $ gcc -S test.i

    将预处理文件 test.i 汇编,输出到 test.s 中;

  5. 编译选项 -c

    $ gcc -c test.s -o test.o

    编译 test.s 完成后输出到文件 test.o 中;

  6. 编译优化级别(1-3)选项 -O

    $ gcc -O1 test.c -o test

    以编译优化级别为 1 来编译 test.c。优化级别越大,效果越好,时间越长;

  7. 打开警告信息提示选项 -W、-Wall

    gcc -Wall test.c -o test

    加入选项 -Wall 后,将会显示 .c 文件编译时的警告信息;

  8. 链接使用库文件选项 -l

    如果 test.c 中有用到 #include ,那么就需要加 -lm,代表需要使用 libmath;

    gcc -lm test.c -o test

    -lxxx 连接名为 xxx的库文件,在标准搜索目录中寻找库文件 liblibrary.a-L dir 选项也可指定包含其他搜索路径;

  9. 多文件编译

    gcc func.c test.c -o test

  10. 分别编译源文件,链接目标文件,完成多文件编译

    $ gcc -c func.c -o func.o

    $ gcc -c test.c -o test.o

    $ gcc -c func.o test.o -o test

    这种方法可以在修改文件后,之重新编译修改过的文件,未修改过文件无需重新编译;