C语言学习笔记-静态库与动态库

一.当多个程序共用一个源文件(某个自定义的函数)内容时的方法步骤

1.创建共用的自定义函数文件.c结尾,内容为该函数的内容

2.创建的文件以.h结尾的头文件,内容是函数声明

3.在调用共用函数时声明的方法:

#include "xxxx.h"

二.什么是标准头文件?

书写c语言时,#include <stdio.h>其中stdio.h文件是标准头文件,标准头文件的保存目录(在linux系统中)是:/usr/local/include或/usr/include。

三.将自定义函数名文件作为标准头文件使用的步骤

第一种方法:将头文件放在标准目录中

第二种方法:在include语句中使用完整路径名

#include"/xxxx/xxxx.h"

第三种方法告诉编译器去哪里找头文件

扫描二维码关注公众号,回复: 7608932 查看本文章

gcc -I./头文件所在目录 c文件 -c 目标文件名

四,共享目标文件

将.o目标文件放入一个共享目录的地方,编译时加上参数即可

gcc -I /目标文件目录 c源文件

        /目标文件目录/目标文件

        /目标文件目录/目标文件 -o 需要编译的目标文件

五.静态库

1.静态库是什么?

静态库中存储了由c文件编译后生成的目标文件(.o结尾),打包而形成的文件

静态库多为.a结尾文件,在linux操作系统中静态库文件的名字格式为libxxxx.a,系统静态库文件存放在/usr/local/lib 或 /usr/lib 或/usr/lib64/

使用nm命令可查看静态库文件内容

1.怎样创建静态库?

ar -rcs 静态库文件名 多个目标文件的名字

2.编译时怎么样调用静态库

gcc 要编译的c源文件名字 -l静态库名字 -o 目标文件名字

-l选项后面的名字必须与静态库名字的一部分匹配

上面的例子是调用在系统标准静态库目录下的静态库文件

下面的例子是调用自定义目录下的静态库文件

gcc 要编译的c源文件名字 -L存放静态库的目录名字 -l静态库名字 -o 目标文件名字

六.动态库

1.什么是动态库?

动态库文件的格式为:

xxxx.dll(windows操作系统)

xxxx.dll.a(windows操作系统)

libxxx.so(linux操作系统)

libxxxx.dylib(mac操作系统)

在程序运行时加载的库文件,与静态库的区别,静态库是在编译时就将代码组合到一起生成一个可执行文件,不需要相同的环境即可将可执行文件移植到其他机器使用,而动态库是在程序加载时动态载入目标文件,可执行文件与动态库文件必须同时存在,不可单独移植到其他机器。

2.动态库文件的创建:

首先创建目标文件

gcc -I头文件所在目录 -fPIC -c c源文件名字 -o 目标文件名字

-fPIC选项告诉编译器创建位置无关代码

创建动态库文件

gcc -shared 上一步生成的目标文件名字 -o 动态库文件的名字

运行程序时调用标准目录下的动态库,直接运行程序即可

调用自定义目录下的动态库文件的方法:

linux下首先设置变量指向自定义的动态库目录:

export LD_LIBRARY_PATCH=$LD_LIBRARY_PATCH:自定义的动态库目录

猜你喜欢

转载自www.cnblogs.com/renren-study-notes/p/11741005.html