Linux——自动化编译(make的使用)、库文件(静态库和共享库的使用)

发布于:2022-12-23 ⋅ 阅读:(1218) ⋅ 点赞:(0)

一、make的使用(自动化编译)

make是Linux上的工程管理工具,可以实现自动化编译;make可以提高我们的编译效率。

1.安装make

命令:sudo apt install make

2.make的用法 

(1)创建makefile文件(文件名称一定是makefile)

 

 (2)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键(不是空格);

(3)运行结果

  vim makefile

  make

./main

多次make看结果;修改一个文件make看结果;make clean。

3.用法举例

二、库文件 

(1)库是一组预先编译好的方法的集合;

         Linux系统存储库的位置一般在:/lib和usr/lib;在64位系统上有些库也可能被存储在/usr/lib   下。库的头文件一般会被存储在/usr/include下或者其子目录下。

(2)库的分类

①静态库(命名规则:libxxx.a)

②共享库(命名规则:libxxx.so)

(3)静态库的生成及使用

①先将所有要生成库问价的.c文件编译成. o文件;

②创建静态库(使用命名ar)

ar crv libxxx.a xxx.o xxx.o

c:创建库

r:将方法添加到库中

v:显示过程

③使用静态库

gcc -o main main.c(文件名是什么就把main改成什么)

gcc -o main main.c -L. -lxxx

-L:指定库的存储位置

-l:指定库的名称(不需要lib和扩展名)

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

④静态库用法举例

(4)共享库生成及使用

①先将所有要生成库文件的.c文件编译成.o文件;

②打包生成共享库(gcc)**

gcc -shared -fPIC  -o libxxx.so xxx.o xxx.o

③共享库的使用

gcc -o main main.c -L路径. -l库名

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

sudo mv libxxx.so    /usr/lib

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

ldd main

④共享库用法举例

(5)静态库和共享库的区别

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

静态库,就是这10个应用程序都包含了这个库文件,那么10分的库文件都放在磁盘上(占用磁盘空间),而且运行加载的时候占用内存空间(10份库文件都要加载)。

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

共享库如果十个应用程序共享,那么磁盘上只有一份共享的库文件,而且运行加载时在内存中只加载了标记了的这一份库文件;共享库便于升级。

如有错误,敬请指正!

您的点赞与收藏是对我最大的鼓励与支持。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到