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

  • 相关阅读:
    MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
    市值TOP10,人类进化及中美坐标
    倒序切片
    对list进行切片
    Python之定义可变参数
    Python之递归函数
    Python之“可变”的tuple
    Python之创建单元素tuple
    Python中Unicode字符串
    Pycharm配置autopep8让Python代码更符合pep8规范
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/10256761.html
Copyright © 2011-2022 走看看