zoukankan      html  css  js  c++  java
  • gcc相关

    gcc相关

    • 预处理 -E, 调用处理器cpp
        宏替换, 头文件展开, 去注释
        xxx.c-->xxx.i

    • 编译-S, 调用编译器gcc, 编译的过程最消耗时间,
        xxx.i --> xxx.s 生成汇编文件

    • 汇编-c, 调用连接器ld
        xxx.s --> xxx.o 生成二进制文件

    • 连接, 没有参数, 默认输出a.out
         可执行文件

    zyb@server:~$ g++ -E test.cpp &> test.i		# 需使用文件重定向, 否则输出至屏幕
    zyb@server:~$ g++ -S test.i 
    zyb@server:~$ g++ -c test.s 
    zyb@server:~$ g++ test.o -o test.app
    zyb@server:~$ ls test.*
    test.app  test.cpp  test.i  test.o  test.s
    

    gcc常用参数
      -I编译时指定头文件目录
      -L指定静态库所在目录
      -l指定静态库的名字
      -o指定生成文件的名字
      -c将汇编文件生成二进制文件, 得到一个.o文件
      -g生成文件内含调试信息, 文件会比没有调试信息大
      -D在编译的时候指定一个宏, 在测试程序时使用
      -Wall输出警告信息
      -O##代表优化级别, 有1, 2, 3可选

    zyb@server:~/dir_test$ cat ./include/head.h 
    #ifndef __HEAD_H__
    #define __HEAD_H__
    
    #define NUM1  10
    #define NUM2  20
    
    int add(int a, int b);
    int div(int a, int b);
    int mul(int a, int b);
    int sub(int a, int b);
    
    #endif
    zyb@server:~/dir_test$
    zyb@server:~/dir_test$ cat sum.c 
    #include <stdio.h>
    #include "head.h"
    
    int main() {
    	int a = NUM1;
    	int aa;
    	int b = NUM2;
    	int sum = a + b;
    	
    #ifdef DEBUG
    	printf("The sum value is: %d + %d = %d
    ", a, b, sum);
    #endif
    	return 0;
    }
    zyb@server:~/dir_test$
    zyb@server:~/dir_test$ gcc sum.c -I ./include/ -D DEBUG
    zyb@server:~/dir_test$ ./a.out 
    The sum value is: 1 + 2 = 3
    zyb@server:~/dir_test$ gcc sum.c -I ./include/		# 没有编译时没有-D选项 
    zyb@server:~/dir_test$ ./a.out					# 不会输出打印信息
    zyb@server:~/dir_test$ gcc sum.c -I ./include/ -Wall	# 输出警告
    sum.c: In function ‘main’:
    sum.c:8:6: warning: unused variable ‘sum’ [-Wunused-variable]
      int sum = a + b;
          ^
    sum.c:6:6: warning: unused variable ‘aa’ [-Wunused-variable]
      int aa;
    
  • 相关阅读:
    Table的基本操作
    MySQL数据库基本操作
    jmeter中服务器返回的cookies的查看
    jemeter的乱码问题
    cucumber的报告
    Cucumber的依赖
    idea里maven执行插件pom文件依赖设置
    Tomcat和jenkins的安装
    maven配置
    Ajax必知必会
  • 原文地址:https://www.cnblogs.com/hesper/p/10672976.html
Copyright © 2011-2022 走看看