首页

文章

Linux中如何创建静态库和动态库

发布网友 发布时间:2022-04-19 13:22

我来回答

1个回答

热心网友 时间:2023-10-18 03:00

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H 程序2: hello.c #include 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等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 linux终端静默打开软件 linux动态库和静态库的区别 Linux下的静态库和动态库 LINUX下的静态路由 linux怎么静态编译 linux静态库和共享库的区别 linux静态库怎么编译 Linux里面什么是静默安装? Linux怎么添加静态路由? Linux里面什么是静态变量? Linux里面什么是静默状态? linux系统中有哪些静 九阳豆浆机打豆浆需要多长时间 用九阳豆浆机做豆浆时,水和豆子的比例应该是多少? 榨豆浆一次要用装多少水呢 九阳豆浆机打豆浆要多长时间 豆浆机做豆浆用多长时间啊 豆浆机打豆浆多久打好 九阳豆浆机打一次豆浆一般要多长时间? 用豆浆机打一个人的豆浆要多少黄豆和水 周庄古镇有什么值得推荐游览的地方和美食呢? 周庄古镇美食有哪些?景区内哪些东西值得吃? 周庄古镇的景点比较分散,有哪些值得游览的呢? 想去周庄旅游,大家有什么好的攻略推荐吗? 江苏昆山市的周庄古镇有什么岭南特色美景? 卡帝车控+官网 江南水乡最有名的为什么是周庄古镇? 卡帝车控+官网卡帝车控ID和密码怎么输入? 周庄古镇晚上几点免费开放 卡帝车控gsm离线 苏州十大古镇分别是哪里? 卡帝手机智能控车 手机控车 限制距离吗 卡帝车控绑定的手机不用了怎么充值? 昆山周庄古镇怎么样呀?好玩吗?门票是多少呀? 卡帝车控怎么换手机号码 上海周庄古镇门票价格? 404 Not Found 周庄古镇几点免费开放 卡帝车控安装完以后怎么设置开关提示? 周庄古镇门票多少钱 开放了吗 晚上几点不收费
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com