Unix环境编程-第一章动态库,静态库

本文详细介绍了静态库和动态库的创建与使用过程。包括如何通过gcc编译源代码生成目标文件,如何使用ar工具创建静态库,以及如何通过gcc链接静态库生成可执行程序。同时,也讲解了动态库的生成与使用,以及如何设置环境变量以便正确链接库文件。

静态库
把目标文件归档
1.编写源代码 add.h add.c sub.h sub.c
2.编译成目标文件
gcc -c add.c ==> add.o
gcc -c sub.c ==> sub.o
3.创建静态库
ar -r liboper.a add.o sub.o ==> 静态库的名字是 oper

在任何一个地方:
如果需要使用到add.h 和 sub.h中的函数时
main.c
#include “add.h”
#include “sub.h”
调用函数
需要注意:
gcc -I [add.h sub.h的路径] main.c -loper -L静态库所在路径
链接静态库
把静态库中的函数一并生成可执行代码到可执行程序中(相当于复制)
链接静态库生成的可执行程序 不依赖于 静态库
静态库的搜索路径可以配置到环境变量中:
export LIBRARY_PATH=LIBRARYPATH:静态库存储的路径在 /.bashrc中添加exportLIBRARYPATH=LIBRARY_PATH:静态库存储的路径 在~/.bashrc中添加 export LIBRARY_PATH=LIBRARYPATH: /.bashrcexportLIBRARYPATH=LIBRARY_PATH:静态库存储的路径

动态库
1.编写源代码 add.h add.c sub.h sub.c
2.编译
gcc -fpic|-fPIC -c add.c
gcc -fpic|-fPIC -c sub.c
3.生成动态库
gcc -shared add.o sub.o -o libdyoper.so

使用动态库
gcc -I 头文件 main.c -ldyoper -L 动态库存储路径
export LIBRARY_PATH=$LIBRARY_PATH:动态库存储路径
修改~/.bashrc
生成可执行程序

运行可执行程序 a.out 需要依赖于 动态库 libdyoper.so
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库的路径
修改~/.bashrc

即使编译成可执行文件之后
可执行程序依然依赖于动态库文件

-I
-l
-L

CPATH
LIBRARY_PATH
LD_LIBRARY_PATH

liboper.a liboper.so
gcc main.c -loper 链接的是动态库

#include <dlfcn.h>

void *dlopen(const char *filename, int flag);
		打开一个动态库文件  把动态库的内容加载到内容
		 RTLD_LAZY
		 RTLD_ROW
char *dlerror(void);

void *dlsym(void *handle, const char *symbol);

int dlclose(void *handle);

Link with -ldl.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值