zoukankan      html  css  js  c++  java
  • Clang比 gcc/g++更人性化代码出错提示的C/C++编译器

    编译器方面的几个命令

    gcc/g++

    一. 常用编译命令选项

    常用用法
    gcc -Wall test.c -o test

    gcc编译过程

    .c ->(-E)->    
    .i[中间文件] ->(-S)->
    .s(汇编文件) ->(-c)->
    .o[机器语言文件] ->

    1. 无选项编译链接

    > 用法: gcc test.c
    > 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

    2. 选项 -o 第四步 链接(Linking)

    > 用法: gcc test.c -o test
    > 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

    3. 选项 -E 第一步 预处理(Pre-Processing)

    > 用法: gcc -E test.c -o test.i
    > 作用:将test.c预处理输出test.i文件。

    4. 选项 -S 第二步 编译(Compiling)

    > 用法: gcc -S test.i
    > 作用:将预处理输出文件test.i汇编成test.s文件。

    5. 选项 -c 第三步 汇编(Assembling)

    > 用法: gcc -c test.s
    > 作用:将汇编输出文件test.s编译输出test.o文件。

    6. 无选项链接

    > 用法: gcc test.o -o test
    > 作用:将编译输出文件test.o链接成最终可执行文件test。

    7. 选项 -O

    > 用法: gcc -O1 test.c -o test
    > 作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

    二. 多源文件的编译方法

    1. 多个文件一起编译

    > 用法:#gcc testfun.c test.c -o test
    > 作用:将testfun.c和test.c分别编译后链接成test可执行文件。

    2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

    > 用法:
    > gcc -c testfun.c //将testfun.c编译成testfun.o
    > gcc -c test.c   //将test.c编译成test.o
    > gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

    clang

    clang的编译选项大部分和gcc相同
    clang --help clang file.c -fsyntax-only (check for correctness) clang file.c -S -emit-llvm -o - (print out unoptimized llvm code) clang file.c -S -emit-llvm -o - -O3 clang file.c -S -O3 -o - (output native machine code)

    clang -### min.c -o min
    -###参数是为了查看,clang driver到底调用了哪些命令,并且不会执行这些命令
    词法分析:
    clang -cc1 -dump-tokens min.c
    语法分析:
    clang -fsyntax-only -Xclang -ast-dump min.c

    使用clang编译源文件,错误提示相较于C要人性化跟多,方便快速阅读查找定位。
  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    107. Binary Tree Level Order Traversal II
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    104. Maximum Depth of Binary Tree
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    系统和进程相关信息
    文件I/0缓冲
    系统编程概念(文件系统mount等函数的使用)
  • 原文地址:https://www.cnblogs.com/sanghai/p/6240396.html
Copyright © 2011-2022 走看看