【linux gcc】gcc编译器相关(7月6日学习总结)_学习笔记_003

一、gcc命令使用格式:

gcc [选项] [文件] [选项] [文件]

 

        

-E

对源文件进行预处理

-c

对源文件进行编译或汇编

-S

对源文件进行编译

-o file 

输出目标文件file

-w

屏蔽所有警告信息

-Wall

显示所有类型警告信息

-O0

不进行优化(默认)

-O1

 

-O2

 

-O3

 

-L

指定搜索路径

 

 

二、<> 与 ” ” 区别


1.< >一般用于标准的头文件,表示在系统配置的头文件目录中搜索,找不到则报错

2.” ”一般用于自己编写的程序,表示先在当前目录搜索,搜索不到则在系统配置的目录中寻找

 

虽然” ” 可以用于在系统配置目录搜索,但是因为需要先在当前目录搜索,会降低运行效率,因此“ ” 一般用于自己编写的程序,< > 用于标准的头文件。

 

 

三、如何写一个头文件,方法有两个:

方法1

先建立一个后缀为.c的文件,文件名为add.c,用于书写函数,内容如下


然后建立一个后缀为.h的文件,文件名为add.h,用于声明函数,内容如下

 

 

再建立一个c程序main.c引用该头文件,内容如下

 

最后同时对main.c  add.c进行编译

 

运行结果如下

 

方法2

建立一个后缀为.h的文件,add.h,内容如下


 

建立main.c

 

此时只需编译main.c,即可得到结果


 

四、库文件

库文件的特点看不到库文件里定义的函数和变量,但是可以调用其中的函数

 

不同位置存储的库文件的作用:

1.根目录下库文件/bin:系统运行所依赖的库文件

2./usr/bin:程序软件运行所依赖的库文件

 

静态库与动态库的区别:

1.使用时机

静态库:后缀名为.a,在编译时将库文件中的代码搬迁到执行文件中。

动态库:后缀名为.so,在执行时将需要的库文件中的代码搬迁到执行文件中。

 

2.其他区别:

静态库

动态库

可执行文件体积大

 可执行文件体积小

可执行文件运行效率高

 运行效率低

不易升级,使用需重新编译 

 易于升级

编译速度慢

 编译速度快

代码布局更方便

 布局较难

 

总结:需要频繁升级,或者有多个源文件需要调用函数库,使用动态库;

          需要较高的执行效率,只有少数源文件需要调用函数库,使用动态库。

 

制作库文件(以建立add库函数为例):

1.制作静态库:(1)gcc  -c  add.c            (生成add.c的汇编文件)

      (2)ar  rcs  libadd.a  add.c   (把add.o封装到库里)

                      (3)gcc  main.c -ladd.a  -L.  (使main.c链接到libadd.a库(使用库))

 

PS:1.头文件不进行声明依然可以执行程序,会出现如下警告

          2.-L. 为库文件当前所在目录,若在其他目录需要指定其路径



 

2.制作动态库:(1)gcc  -shared -fIPC  add.c  -o libadd.so (制作add.c动态库)

                      (2)gcc  main.c  ./libadd.so                (使用动态库)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值