zoukankan      html  css  js  c++  java
  • gcc/g++ 编译参数

    1, -E(大写),预处理

    • 例子:gcc -E test.cpp -o test.i
    • 预处理,把程序里的#开头的替换掉,比如#include,然后生成test.i

    2,-P(大写),去掉预处理生成的杂乱信息

    • -E后生成的文件里面有很多杂乱的信息,用-P可以去掉杂乱的信息。

    3,-S(大写),生成汇编文件

    • -masm=att 生成AT&T格式的汇编文件
    • -masm=intel 生成intel格式的汇编文件

    4,-c(小写),只编译不链接,生成二进制文件

    • 把生成的二进制文件再转回汇编代码的方法:objdump -D main.o
    • objdump -M intel 和 objdump -M att,分别生成intel格式的汇编代码和AT&T格式的汇编代码

    5,-D 指定宏

    假如有下面的代码:

    #include <stdio.h>
    int main(){
    #ifdef DEBUG
      printf("DEBUG LOG
    ");
    #endif
      printf("in
    ");
    }
    

    在编译的时候,使用【-D DEBUG】,【printf("DEBUG LOG ");】就可以被执行。

    6,-Wall 显示更多的警告信

    比如:定义了一个变量c,但是你没有使用它。加上-Wall就会出c没有被使用的警告信息,不加就不会出。

    int main(){
      int c;
    #ifdef DEBUG
      printf("DEBUG LOG
    ");
    #endif
      printf("in
    ");
    }
    

    警告信息:

    test.c: In function ‘main’:
    test.c:4:7: warning: unused variable ‘c’ [-Wunused-variable]
       int c;
           ^
    
    

    7,用gcc编译c++的源文件:【-lstdc++】

    gcc -g hello.cpp -lstdc++
    

    8,优化代码(大写的):-O1,-O2,-O3

    优化内容:让代码效率更高,要逐级的实验,先从1开始。
    比如有两个变量int a = 10, b = 10;优化后,就尽量使用一个等;函数调用的地方,直接把调用去掉,替换成函数的代码等。

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/10256761.html
Copyright © 2011-2022 走看看