For the GNU Compilers gcc and g++

编译流程

  1. 预处理 宏展开

    $ cpp -E hello.c > hello.i
    

    -E 仅仅运行预处理器输出宏展开结果

  2. 编译 源代码编译成汇编语言

    $ gcc -S hello.i
    

    -S 仅仅运行预处理器和编译步骤输出 hello.s

  3. 汇编 汇编语言到机器码

    $ as hello.s -o hello.o
    
    $ gcc -c -save-temps hello.c -o hello.o
    

    -c 预处理、编译、汇编
    -save-temps 保存中间编译结果 hello.i

  4. 链接 链接对象生成可执行程序

    $ ld -dynamic-linker hello.o -lgcc ...
    

与次序相关的选项

搜索外部函数的次序是在命令行上指定的对象文件中 从左到右查找。 包含函数定义的对象文件应当出现在调用这些函数的任何文件之后。

include 路径

库搜索路径

常用编译选项

  • -Wall-W 通常同时使用
  • GNU 发行的软件包默认都打开了调试选项 -g 和优化选项 -O2

平台编译选项

相关工具

其它