栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux基础——7

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux基础——7

七:库文件的生成和使用 1.什么是库文件?

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

Linux上的库的位置:/lib 和 /usr/lib,但是在红帽子上,/lib和/usr/lib分开

库有两种形态:静态库和动态库(共享库)

linux:静态库(libxxx.a),动态库(libxxx.so)

windows:静态库(.lib),动态库(.dll)

2.静态库如何生成和使用 2.1 静态库的生成

下面会有准备生成静态库的三个文件:max.c add.c和fun.h

第一步:先将源文件编译成".o"文件 

第二步:使用ar命令将第一步产生的“.o”文件,生成对应的静态库

c 创建库        r 将对应方法添加到库中        v 显示执行过程        t 显示库中包含的方法

2.2 静态库的使用

现在有测试文件main.c的代码内容

3.动态库如何生成和使用 3.1 动态库的生成

下面会有准备生成静态库的三个文件:max.c add.c和fun.h

第一步:先将源文件编译成".o"文件 

第二步:使用gcc命令将第一步一步产生的“.o”文件,生成对应的动态库

gcc -shared -fPIC -o libxxx.so max.o add.o

-shared 生成动态库        -fPIC 说明生成的动态库中的方法使用相对地址

3.2 动态库的使用

现在有测试文件main.c的代码内容:

运行起来,发现可执行文件main,能生成,但是执行起来会报错,会说找不到相应的共享库,因为可执行文件main执行起来发现需要共享库funs,它直接回去标准路径下/usr/lib去找,这时肯定找不到,所以会报错,解决方案就是将生成的动态库libfuns.so拷贝一份放到/usr/lib下,就不会报错了。

假设当前路径下,有同名的静态库和动态库,那么可执行文件链接的是哪一个库? 

4.静态库和共享库的区别

静态库在链接时将用到的方法包含到最终生成的可执行程序中

共享库不包含,只做标记,在运行程序时,才动态加载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963099.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号