欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux应用开发 | 动态库

程序员文章站 2022-06-04 12:04:27
...

一、概念

Linux应用开发 | 动态库

二、测试代码

test.c
Linux应用开发 | 动态库
test.h
Linux应用开发 | 动态库

三、制作动态库

3.1 将c文件转换到汇编.o文件

Linux应用开发 | 动态库
-fPIC 意思是产生位置无关代码
Linux应用开发 | 动态库

3.2 创建动态库

Linux应用开发 | 动态库

Linux应用开发 | 动态库
libtest.so就是生成的动态库

四、使用动态库

4.1编写main.c

包含test.h接口文件 (头文件)
Linux应用开发 | 动态库

4.2 编译

Linux应用开发 | 动态库
编写的写法和静态库一样
-L表示库的路径 点表示当前路径
-l表示使用的库名称 注意: 不能写成libtest.a
Linux应用开发 | 动态库

这里报错 找不到.so文件 文件明明是有的 为啥找不到呢
因为动态库并没有被编译到可执行文件中,所以环境中必须提供库的支持
解决方法:

编译出错 解决方法

1. 把动态库拷贝到/lib下

Linux应用开发 | 动态库
但是这样做会污染系统库目录 不建议这样做

2. 修改LD_LIBRARY_PATH

Linux应用开发 | 动态库
Linux应用开发 | 动态库
推荐使用 不会覆盖之前的路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./

然后就可以正常执行了

五、 补充

Linux应用开发 | 动态库
Linux应用开发 | 动态库
Linux应用开发 | 动态库
Linux应用开发 | 动态库

优缺点

Linux应用开发 | 动态库
Linux应用开发 | 动态库

相关标签: 嵌入式Linux