1.库+makefile|全球简讯

2023-04-28 20:13:53 来源:哔哩哔哩


【资料图】

功能:移植性,封装性,保护源码

分类: 静态库  .a

动态库  .so

一、

静态库:libXXX.a

1、  准备功能函数的.c文件

将所有功能函数的.c文件编译为.o文件

2、 打包生成静态库: ar -rc libxxx.a add.o...

libStatic.a  库名要掐头去尾:Static

3、 利用静态库编译程序

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

-l:(小写的L)指明用到的库文件

-L:库文件所在的的路径

特点:以空间换取时间

二、

libdong.so  动态库

1、先准备功能函数的 .c

2、将.c  转化为 .o

3、打包生成动态库  libxxx.so

gcc  -fpic  -shared  xxx.o yyy.o -o libxxx.so

或 gcc -shared -fpic *.o -o libdong.so

4、

第一步:将动态库拷贝到/usr/lib

第二步:编译应用程序 gcc main.c -lxxx  

-l:(小写的L)指明用到的库文件

sudo cp libdong.so /usr/lib

验证:gcc mian.c -o main -ldong

特点:./main 以时间换空间 

三、

makefile

make

1、作用

相当于脚本编程语言,本质是实现自动化编译,需要makefile或者Makefile文件支持

2、安装

sudo apt-get install make

3、使用

makefile/Makefile是一个文件,可以用vim或者gedit编辑

格式:

目标:依赖

(Tab)命令

整体思想:目标和依赖的关系,命令就是来定义由依赖如何生成目标的

注意:命令之前要有tab键不允许有空格

注释: 以#开头

变量

定义: 变量名=XXX

使用: $(变量名)

特殊变量:

$@ 目标文件

$^ 所有的依赖文件

如果目标文件中有多个重复的,那么这个变量会除去重复的依赖文件,只保留一份。

$< 所有依赖合集中的第一个依赖文件

如果依赖目标是以模式(%)定义的,那么$<将是复合模式的一系列的文件集合,注意,是一个一个取出来的,和目标一对一执行命令。

%表示通配符

伪目标:没有依赖的目标

格式:

目标:

(Tab)命令

举例:

clean:

rm *.o main

运行:

终端输入:make

make默认生成文件中的第一个目标

要想从生成其他目标:make 目标

备注:

多个makefile

make的时候是需要有makefile文件来支持

直接make:会找  Makefile  或 makefile(先找makefile,没有就找Makefile)

想要指定:make -f makefile或者make -f Makefile

标签:
x 广告
x 广告

Copyright ©  2015-2022 华东公益网版权所有  备案号:京ICP备2022016840号-41   联系邮箱:2 913 236 @qq.com