linux5-make、库文件(静态库和共享库)

一、make

Linux上的工程管理工具,可以实现自动化编译;

1)安装make:

在这里插入图片描述

2)make的使用:

以此为例:
在这里插入图片描述

|

//多文件的编译 
gcc -o main main.c add.c max.c 


gcc -c main.c 
gcc -c add.c 
gcc -c max.c 

makefile的编写:

在这里插入图片描述

all:main 
main:add.o max.o main.o 
	gcc -o main add.o max.o main.o 

add.o:add.c 
	gcc -c add.c 

max.o:max.c 
	gcc -c max.c 
main.o:main.c 
	gcc -c main.c 

clean:
	rm -rf *.o main
	

注意:

写makefile(可以改名字,但不建议,可能可以运行)的时候要定格写,以及tab键,可以不空行
注意写makefile文件的时候,顶格写,tab键(不是空格);
vim makefile
make
./main
自己练习:多次make看结果,修改一个文件make看结果,make clean

在这里插入图片描述

clean的使用:

在这里插入图片描述

二、库文件

库–是一组预先编译好的方法的集合;
Linux系统存储库的位置一般在:/lib 和 /usr/lib;在64位系统上有些库也可能被存储在/usr/lib64下;
库的头文件一般会被存储在/usr/include下或者其子目录下;

库的分类:静态库和共享库

1、静态库

命名规则:libxxx.a

1)生成静态库及使用

(1)先将所要生成库文件的.c文件编译成.o文件;
(2)创建静态库(使用命令ar)

ar crv libxxx.a xxx.o xxx.o

c:创建库
r:将方法添加到库中
v:显示过程
(3)使用静态库

gcc -o main main.c -L. -lxxx    //(main为文件名示例)

-L:指定库的存储位置;
-l:指定库的名称(不需要lib和扩展名.a)

示例:
在这里插入图片描述
在这里插入图片描述

2)静态库缺点

当你同时运行许多应用程序并且它们都使用来自同一个函数库的函数时,内存中就会有同一函数的多个副本。
而且在程序文件自身中也有多份同样的副本,这将消耗大量宝贵的内存和磁盘空间;

2、共享库

命名规则:libxxx.so

1)静态库生成及使用

1)先将所有要生成库文件的.c文件编译成.o文件;
2)打包生成共享库(gcc)

gcc -share -fpic -o libxxx.so xxx.o xx.o

3)共享库的使用

gcc -o main main.c -L路径 -l库名 (其中main为文件名)

注意:共享库一定要放到标准路径下:

sudo mv libxxx.so /usr/lib

补充了一个命令:查看使用了哪些共享库 ldd

ldd main

静态库和共享库的区别

静态库:方法包含到库里面,体积大;

共享库:方法没有包含进去,只是做了一个标记,体积小;

共享库如果10个应用程序共享,那么磁盘上只有一份共享的库文件,而且运行加载时在内存中只加载了标记了的这一份库文件;
而静态库,就是这10个应用程序都包含了这个库文件,那么10份的库文件都放在磁盘上了(占用磁盘空间),而且运行加载的时候占用内存空间(10份库文件都要加载);

共享库便于升级;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值