一、GCC编译过程及一些参数

gcc编译的四个阶段

  • 预处理器:cpp 头文件展开、宏替换、去掉注释 gcc -E hello.c -o hello.i
  • 编译器:gcc C文件编程汇编文件 gcc -S hello.i -o hello.s
  • 汇编器:汇编文件变成二进制文件 gcc -c hello.s -o hello.o
  • 链接器: 将函数库中相应的代码组合到目标文件中 gcc hello.o -o hello

参数:

  • -I
    • 如果 test.c 在 /home/mp5530/code 目录; test.h在 /home/mp5530目录,则编译的使用:gcc test.c -I /home/mp5530 -o mytest
  • -D
    • 在编译的时候指定宏 gcc test.c -I /home/mp5530 -o mytest -D DEBUG
  • -O
    • 是否需要优化程序 -O0(没有优化) -01(缺省值) -03(优化级别最高), 等级最高为3, 去除冗余代码
  • -Wall
    • 在程序编译的时候输出警告信息
  • -g
    • 在程序编译时加入调试信息(gdb调试的时候必须加此参数)
  • -L
    • 静态库所在的目录
  • -l

    • 指定静态库的名字(去掉前面的lib 和后面的 .0)

      二、静态库的制作和使用、优缺点

      静态库的制作
  • 命名规则

    • lib +库的名字+ .a2). libmytest.a
  • 制作步骤
    • 生成对应的.o文件— .c —> .o-c
    • 将生成的.o文件打包ar rcs +静态库的名字(libMytest.a)+生成的所有的.o3>。
  • 发布和使用静态库
    • 发布静态库
    • 头文件

GCC 静态库 动态库 - 图1

三、共享库的制作、使用

GCC 静态库 动态库 - 图2

四、GDB调试

GCC 静态库 动态库 - 图3