动静态库的制作和使用

发布时间:2026/10/20 0:20:38

动静态库的制作和使用 一、库库本质上是多个.o文件的集合库就相当于真正的生产车间比如你用的stdio.h这个头文件他就相当于使用说明书。二、静态库的制作与使用2.1 简单制作.a 就是linux中的静态库 就是多个.o文件的集合体ar -rc lib库名.a *.o2.2 使用将需要的头文件使用说明书和.a库拷贝到friend文件夹中gcc -o 可执行文件名字 main.o -l库名 -L./-l 指明库的名字告诉gcc -L 库路径在哪2.3 易错库不能包含main函数2.4 Makefile方法制作静态库1 libmystdio.a:mystdio.o mystring.o 2 ar -rc $ $^ 3 %.o:%.c 4 gcc -c $ 5 6 .PHONY:clean 7 clean: 8 rm -rf *.o *.a mylib 9 .PHONY:output 10 output: 11 mkdir -p mylib 12 mkdir -p mylib/include 13 mkdir -p mylib/lib 14 cp *.h mylib/include 15 cp *.a mylib/libmake之后再 make output这时候我们生成了一个mylib的文件夹 文件夹中include是头文件 lib就是我们生成的库2.5 如何使用该库2.5.1安装到系统中拷贝软链接也可以这样就可以运行了删掉之后就找不到了就失败了2.5.2 使用选项 随意链接任意的库因为我们将系统中删掉了该库和头文件所以是找不到的所以我们编译的时候要去指定头文件在哪这样形成main的可执行文件需要去指定头文件在哪用-I 同时用-L去指定库在哪 -l库的名字三、动态库的打包和使用同时用Makefile也可以1 libmystdio.so:mystdio.o mystring.o 2 gcc -shared -o $ $^ 3 %.o:%.c 4 gcc -fPIC -c $ 5 6 .PHONY:clean 7 clean: 8 rm -rf *.o *.so mylib 9 .PHONY:output 10 output: 11 mkdir -p mylib 12 mkdir -p mylib/include 13 mkdir -p mylib/lib 14 cp *.h mylib/include 15 cp *.so mylib/lib细节形成动态库不用ar而是继续使用gcc/g动态库上面的使用和静态库一样 但是运行的时候并没有成功 我们ldd这个发现燃事故 not found但是我们上述已经告诉gcc了那为什么找不到呢运行这个程序的时候是操作系统加载器找不到但是我们写的时候是告诉了gcc运行程序的时候和gcc没有任何关系了第一种解决方法将库拷贝到系统中lib64中下第二种做法使用软链接第三种做法通过环境变量通过LD_LIBRARY_PATH这个环境变量第四种做法ldconfig方案四、混淆1 如果我给的mylib的lib中既有.a又有.so那优先是动态链接2 如果给的是静态库 没有加-static 只有这个库是静态链接其他的还是动态链接3 如果加了-static 所有库都要用静态连接
延伸阅读

更多相关文章

2026/10/20 0:17:06

Python的weekday()一出手,星期几立马现原形

参与编程工作时, 处理日期以及时间属于一项常见且重要的任务, 不管是开展数据分析工作, 还是构建Web应用程序, 又或是开发自动化脚本, 我们时常都需要针对日常时间开展各种各样的操作。的的模块给我们提供了强大且灵活的工具用以处理这些任务, 当中()方法是一个极为实用的函数,…

2026/10/20 17:20:55

AndroidKiller实战:APK资源分析与Smali代码解析完整流程

很久以前我刚开始接触Android逆向时,第一件事就是找工具。打开搜索引擎,结果五花八门,但真正能把“资源分析”和“代码解析”串成一条完整流程的,AndroidKiller算是我用得最顺手的之一。这篇文章就以AndroidKiller为主线&#xff…

2026/10/20 17:20:55

MCP Server 生产级改造:连接、工具描述、错误处理与并发控制

1. 从“能跑”到“敢上线”:MCP Server 的四个断层很多开发者第一次接触 MCP Server 的时候,都会经历一个极其相似的阶段:照着官方文档把示例代码复制下来,本地起一个进程,用客户端连上去,工具列表能拉出来…

2026/10/20 17:20:55

墨西哥现金贷市场全景复盘:风控、产品与合规的实战指南

墨西哥现金贷市场最近几年成了很多出海金融团队绕不开的话题,热钱涌入、流量暴涨、坏账率也跟着坐过山车。市面上关于这片市场的讨论很多,但大多要么停留在宏观叙事,要么只讲某个单一环节的碎片经验。这次我把从市场格局、产品设计到风控落地…

2026/10/20 17:20:55

离线部署Cloudera Manager:本地源搭建与CM Server安装实战

简介:这份资源是面向大数据运维与Hadoop集群管理学习者的Cloudera Manager 5.14.2离线安装包,专为CentOS 7环境准备,解决在无外网或受限网络下部署CM管理平台的难题。压缩包共含18362个文件,约793.9MB,以py、pyo、pyc等…

2026/10/20 17:20:55

GMP中文文档与静态库实战:从编译报错到密码学大数运算

简介:这份资源面向需要处理大数运算的C/C开发者、密码学与数学软件方向的学习者,提供GMP(GNU多精度运算库)的中文文档与静态链接库,帮助解决任意精度整数、有理数、浮点数计算中资料零散、集成困难的问题。压缩包共4个…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑