gcc基本参数以及动、静态库的封装

目录

gcc基本参数以及动、静态库的封装

gcc/g++编译过程

gcc/g++编译器在处理.c文件/.cpp文件时会经过四步步骤:

  • 预处理:处理所有以#号开头的代码,包括头文件、宏定义、条件编译等,生成.i文件。
gcc -E hello.c -o hello.i
  • 编译:将预处理过的.i文件进行语法检查并将其变成汇编语言,生成.s文件。
gcc -S hello.i -o hello.s
  • 汇编:将汇编语言变成二进制,生成.o文件。
gcc -c hello.s -o hello.o
  • 链接:链接代码所需要用到的其他文件(库文件等),生成.exe可执行文件。
gcc hello.o -o hello

注意:链接生成的目标文件不用写exe后缀。

常用参数

参数作用
- c只编译不链接,生成目标文件.o
- S只编译不汇编,生成汇编代码
- E只进行预编译,不做其他处理
- D macro添加macro宏命令
- o file把输出文件输出到file里
- l dir在头文件的搜索路径列表中添加dir目录(i的大写)
- I library链接名为library的库文件 (L的小写)
- L dir在库文件的搜索路径列表中添加dir目录
- static链接静态库
- shared生成共享目标文件。用于建立动态库

静态库封装

Linux和Windows的静态库文件均可以.a结尾。

//生成方法:
gcc -c fun2.c fun3.c		//将需要封装的fun2.c和fun3.c编译成相应的二进制文件
ar -r libfun.a fun2.o fun3.o	//将fun2.o和fun3.o封装到fun.a文件中
//调用方法:
gcc main.c –lfun -L. –o main 	//将main.c文件链接fun静态库,生成main.exe文件

注意:静态库的命名方式为libxxx.a

动态库封装

Linux中动态库文件一般以.so结尾,Windows中动态库文件一般以.dll结尾。

//生成方法:
gcc fun.c -I. -fPIC -shared -o fun.dll	//将fun.c生成生成动态库文件fun.dll
//调用方法:
gcc main.c -I. -L. -lfun -o main	//将main.c链接动态库生成main.exe可执行文件
谢谢大家观看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值