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要人性化跟多,方便快速阅读查找定位。
  • 相关阅读:
    数据结构与算法习题总结——树结构
    SQL入门题集及学习笔记
    nlp入门系列笔记——阿里天池新闻文本新手赛
    linux一步一脚印--- ls -l 命令执行显示结果的每一列含义
    Python tuple元组---学习总结
    Python——列表深浅拷贝
    Python list列表---学习总结
    linux一步一脚印---mv命令
    linux一步一脚印---rm命令
    linux一步一脚印---cp命令
  • 原文地址:https://www.cnblogs.com/sanghai/p/6240396.html
Copyright © 2011-2022 走看看