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

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

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

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

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

#include "xxxx.h"

二.什么是标准头文件?操作系统

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

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

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

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

#include"/xxxx/xxxx.h"编译

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

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:自定义的动态库目录
相关文章
相关标签/搜索