问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux动态库的创建

发布网友 发布时间:2022-04-23 00:50

我来回答

4个回答

热心网友 时间:2023-09-06 03:18

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H 程序2: hello.c #include <stdio.h> void hello(const char *name) { printf("Hello %s!\n", name); } 程序3: main.c #include "hello.h" int main() { hello("everyone"); return 0; } 无论动态库还是静态库都需要用到.o文件来生成,先编译生成.o文件。 # gcc -c hello.c 1:创建静态库 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。 # ar cr libmyhello.a hello.o 使用静态库:只需要在你的源程序中加入包含你所需要使用到的函数的声明(即包含头文件),然后在gcc生成目标文件时候指明静态库就OK了(除非你包含的头文件在/usr/include,库文件在标准库/usr/lib,/lib下,否则你得显示指明他们的路径) # gcc -o hello main.c -L. -lmyhello # ./hello Hello everyone! 删除静态库文件运行./hello,程序正常运行,说明静态库公用函数已经链接到目标文件。 2: 利用.o文件创建动态库 动态库文件扩展名为.so。 # gcc -shared -fPCI -o libmyhello.so hello.o 动态库的使用与静态库使用方式一样 # gcc -o hello main.c -L. -lmyhello # ./hello ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory 哦!出错了。快看看错误提示,原来是找不到动态库文件libmyhello.so。程序在运行时,会在/usr/lib和/lib等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。

热心网友 时间:2023-09-06 03:19

你生成A的时候用-lB指定加载B就行了

热心网友 时间:2023-09-06 03:19

动态库可以不通过-l指定。dlopen这个函数就行。

热心网友 时间:2023-09-06 03:20

这个问题比较高升
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网上退税怎么退 如何申请退税? 十多年前看的有部僵尸片电影中间一个僵尸被追到一个城里躺躲在一副水... 什么什么鲜花? 芳香的什么、明亮的什么填名词 芳香的什么 这里的"为"的繁体字对吗?手机上是为和为 塑料保鲜盒概述 红米K60Ultra跑分怎么样 红米K60Ultra最新实测跑分数据一览 性价为纲 极致体验——Redmi K60 Ultra体验测评 为什么k50u之后,至尊版再无骁龙芯?红米是要越来越懵逼了 临沂市哪里有布匹批发市场 Linux系统动鼠标黑屏原因 那里是生产布匹的集中地 linux重启动速度很慢 笔记本鼠标不动了怎么办按什么键处理? 济南的布匹批发市场在什么地方? 红旗E-HS9实车图 先睹为快 中山市的布料市场在哪里呀?坐公车怎么去? 红旗HS5到店实拍,18.38万起,配LED光源+ LCD仪表,搭载2.0T动力 红旗H9开始走红!光车长就5137mm,最低也要30.98万 苏州哪里有批发各种布料江苏苏州最大的布匹批发市场在哪里? 车展报道:红旗E-HS9实拍!高端纯电SUV市场又来搅局者? 中国有哪些布匹批发市场? 红旗E-HS9实车亮相,豪起来不输揽胜,这才是国产品牌该有的排面 山东最大的布匹市场在哪? 红旗新车帅得可怕!2021上海车展“七宗最”! 福州布料市场具体在哪里呢? 红旗作为国产最好的车,它的销量如何呢? 杭州最大的布匹批发市场在哪里? 红旗h7 3.0轿车是四轮驱动还是两轮驱动? linux在启动的时候,需要执行什么动作? 如何让linux的服务自动启动 为什么现在的Linux系统安装动不动就是几个G linux动态库问题 宏基笔记本鼠标经常不动怎么办? Linux动态模块怎样编译? linux动静分离什么意思 linux 下怎么从光盘重启动 linux下如何显示动态的gif图片??? 怎样使linux基础命令讲解的生动有趣 linux 什么时候使用 动态链接 安装Linux 出问题了,卡这不动了。。。急等 Prefix是什么意思? prefix有哪些 什么是prefix 怎么把手机里的歌曲存到电脑里? 什么叫前缀? 手机里本地音乐怎样才能上传到电脑里? 英语词性缩写中的prefix是何? prefix是什么词性