Linux——库文件生成和使用

目录

一、库文件

1.定义

2.linux系统存储库的一般位置

3.库的分类

二、静态库的生成和使用

1.静态库的生成

2.静态库的使用

三、共享库的生成和使用

1.共享库的生成

2.共享库的使用

3.强调

四、共享库和静态库的区别

一、库文件

1.定义

库是一组预先编译好的方法的集合。

2.linux系统存储库的一般位置

位置:/lib和/usr/lib。

注意:库的头文件一般存储在/usr/include下或子目录。

3.库的分类

①静态:命名规则 libxxx.a

②共享库(动态库):命名规则 libxxx.so

二、静态库的生成和使用

1.静态库的生成

假设此时有多个源文件,比如file1.c和file2.c,将它们打包成一个静态库。

①将需要生成库文件的所有".c"文件编译成".o"文件

gcc -c file1.c

gcc -c file2.c

②使用ar命令将所有的".o"文件生成静态库

ar crv libmylib.a file1.o file2.o

其中:c表示创建库 r表示将方法添加到库中 v表示显示过程

2.静态库的使用

gcc -o main main.c -L. -lmylib

注意:

① -L 指定库的存储路径(表示库文件所在目录)

②-l 后面跟库名(不带前缀lib和后缀.a

三、共享库的生成和使用

1.共享库的生成

假设此时有多个源文件,比如file1.c和file2.c,将它们打包成一个共享库。

①将需要生成库文件的所有".c"文件编译成".o"文件

gcc -c file1.c

gcc -c file2.c

②使用gcc命令将所有的".o"文件链接生成共享库

gcc -shared -fPIC -o libmylib.so file1.o file2.o

2.共享库的使用

gcc -o main main.c -L. -lmylib

注意:

① -L 指定库的存储路径(表示库文件所在目录)

②-l 后面跟库名(不带前缀lib和后缀.so

3.强调

①直接执行会出错:是因为系统默认只会去存储库的标准位置(/lib或/usr/lib等)加载,所以要将库拷贝到/usr/lib下,再执行程序。也可以通过设置环境变量"LD_LIBRARY_PATH"指定的路径。

②通过ldd命令查看可执行程序使用了哪些共享库。(ldd 可执行程序)

③如果库的存储路径有同名的共享库和静态库,则默认使用共享库。

四、共享库和静态库的区别

静态库在链接时将用到的方法包含在最终生成的可执行程序中。静态库中如果删除库文件,仍然可以运行(静态库在编译时被复制到程序中,生成的可执行文件内部包含了所有静态库的代码。)

动态库不包含,只做标记,运行程序时,才动态加载。动态库中删除库文件,程序运行时出现错误。(共享库只存在一份,可以被多个程序共享使用)

相关推荐
53Hz3 分钟前
【问题记录】kmemleak 定位内存泄露
linux
53Hz4 分钟前
【调试工具】taskset 设置处理器的亲和度
linux
真成运维4 分钟前
生产环境变更 AppSpace存储切换
linux
53Hz9 分钟前
【调试工具】coredump 使用示例
linux
53Hz9 分钟前
【问题记录】进程调度导致 UDP 丢包问题分析
linux
53Hz11 分钟前
【调试工具】pstore 工具配置及使用
linux
53Hz12 分钟前
【问题记录】如何打包两个dtb文件
linux
panamera1223 分钟前
云端docker小知识
运维·docker·容器
hweiyu0027 分钟前
Linux 命令:less
linux·数据库
cui_win30 分钟前
【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_buckets
linux·网络·.net