clang

https://gcc.gnu.org/onlinedocs
http://clang.llvm.org/docs/UsersManual.html

命令行选项

总体 (Overall):

  • -x language 指定后面的输入文件为语言为 language
  • -c 编译 (compile) 或者汇编 (assemble) 源文件,但是不链接,新文件默认用 .o 代替源文件后缀名
  • -S 在编译之后停止,不进行汇编 (assemble), 后缀 .s
  • -E 在预处理 (preprocessing) 之后停止,不进行编译 (compile), 输出到标准输出
  • -o file 指定输出文件为 file

语言 (Language):

  • -std=c99 使用 ISO C99 标准

警告 (Warning):

  • -Wall 开启用户认为可能有问题的所有警告
  • -Wextra 开启额外的不被 -Wall 始能的警告
  • -Werror 将警告转换为错误
  • -Wlong-long 如果使用 long long 会发出警告
  • -Wno-long-long 关闭 -Wlong-long 选项
  • -Wvariadic-macros 如果定义了可变参数的宏会发出警告
  • -Wno-variadic-macros 关闭 -Wvariadic-macros 选项
  • -fexceptions 当出现了异常,不会退出
  • -DNDEBUG assert 被关闭

预处理 (Preprocessor):

  • -I dirdir 添加到头文件搜索路径中,在系统标准目录之前, 如果其指定的目录包括系统标准目录,则被忽略
  • -isystem dir 添加到头文件搜索路径中,在用 -I 指定的目录之后,在系统标准目录之前

环境变量

  • CPATH 将其所指向的目录添加到系统头文件搜索目录
  • C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH, 类似 CPATH, 针对的是特定的语言
  • LIBRARY_PATH 将其所指向的目录添加到系统链接库搜索目录