• -D name=definition

    指定预处理宏定义,相当于#define name definition

  • -std=XXX

    • c99
    • c++11
  • -M

    输出依赖关系,隐含-E,也就是不编译,只是查看依赖关系,依赖关系包含系统头文件

  • -MM

    输出依赖关系,只是用户的,不包含库文件

  • -MF file

    依赖关系的结果输出到指定文件中,必须指定-M或-MM

  • -MD

    相当于-MM -MF .d ,
    输出依赖关系,不隐含-E,也就是同时生成依赖文件(
    .d),还编译,依赖关系中包含
    系统头文件

  • -MMD

    相当于-MD,生成的*.d中不包含系统头文件

  • -MT file

    使用file中的依赖关系编译,也就是配合-MMD或-MD或-MF来使用,使用他们生成的依赖
    关系自动编译

  • -MP

    连头文件也输出对应的依赖关系,可能为伪目标,防止删除了头文件,而没有更新
    makefile导致编译错误

  • -Ldir

    添加dir到目录列表,目录列表用来搜索链接库

  • -llibrary

    指定链接库,优先寻找共享库(liblibrary.so,liblibrary.a),该选项最好放到最后,
    防止后面需要链接的,详见gcc(1)

  • -static

    指定链接静态库

  • -fPIC

    生成位置无关代码(position independent code)

  • -shared

    生成共享库,需要-fPIC

  • -Idir

    添加目录到搜索头文件列表,添加的优先搜索

  • -Wl,

    向链接器传递选项,’,’隔开选项

  • -Wa,

    向汇编器传递选项,’,’隔开选项

  • -Wp,

    向预处理器传递选项,’,’隔开选项

  • -O

    不开启优化

调试

  • -ggdb3

    生成gdb的调试信息,带宏相关

留言

2015-02-05