欢迎光临散文网 会员登陆 & 注册

1.库+makefile

2023-04-28 20:03 作者:M青春永不言弃  | 我要投稿

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


分类: 静态库  .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

将所有功能函数的.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

 

 

 

 


1.库+makefile的评论 (共 条)

分享到微博请遵守国家法律