1:如何制作库。库的制作视角2:如何使用库 库的使用者角度3:库的制作和加载原理 —ELF库是提前写好的diamanté和数据的集合可以被我们自己的程序直接进行链接使用linux 动态库.so 静态库 .awindows 动态库 .dll 静态库 .lib库本质是二进制文件 文件内容属性 磁盘为什么要存在库提高开发者效率 增加代码健壮性 鲁棒性linux中库名 libXXX.so/.asrc(shellls∗.c)这种写法等价于src(shell ls *.c)这种写法等价于 src(shellls∗.c)这种写法等价于src(wildcard.c)linux中 .h头文件一般放在/usr/include/ 这个目录中 或者是存放在当前路径中gcc -E main.c -o main.igcc -S main.i -o main.sgcc -C main.s -o main.ogcc main.c -o maingcc -o main main.o hello.ogcc -o myexe main.o -L myc/lib -lmycgcc main.c -I myc/include -L myc/lib -lmyc -o main.exelinux库名称 lib库名.a/.so .a是静态库 .so是动态库-I代表.h文件所在的路径 -L 库所在的路径 -l库名称把库安装到系统中的方法把库安装到 /lib64把头文件安装到/usr/includesudo cp myc/include// /usr/include/sudo cp myc/lib/* /lib64 -rf这个时候 gcc main.c -lmyc 虽然此时库文件已经在这个lib64系统文件夹中但是由于是第三方库所以需要加上-lmycsudo rm usr/include/my_str*库-能不能出现main函数不可以库编译到.o就可以了就不会在链接了链接需要有main函数mv makefile makefile_backup库的制作和使用的过程中使用动态库是最佳实践cp makefile_back makefile复制makefile_back 这个文件到当前目录之下生成一个叫makefile的文件这个图片是原来makefile的图片gcc默认就能生成动态库库是多个.o文件加工而来的静态库的加工方式 ar-rc 例如ar-rc 目标库的名称(.a) 原材料名称动态库的加工方式 gcc -shared -o 目标文件名称.so原材料名称gcc -o myexe main.c -I myc/include -L myc/lib -lmyc.i是预处理文件.s是汇编文件.o目标文件除了运行程序之外需要完整路径 其他linux指令操作要是这个文件在当前路径就可以直接写这个文件的名称./myexe 这个操作和编译器就没有关系了os加载运行的动态链接的可执行程序除了要运行你自己的程序之外还需要加载动态库如何让os找到你的动态库在程序运行的时候。如何让os查找到库的路径1: /usr/lib64动态链接的库也在这个路径之下操作系统会进行查找linux指令ldd myexe专门查看动态链接程序 / 动态库依赖哪些 .so 动态共享库用于排查「找不到 so」运行报错。./exe2:在系统路径之下建立软链接sudo ln -s /home/whb/code/code/118/code/lesson/user/myc/lib/libmyc.so /lib64/libmyc.so3:环境变量LD_LIBRARY_PATH:有可能不存在 保存linux系统搜索路径export LD_LIBRARY_PATHLD_LIBRARY_PATH:/home/whb/code/code/118/lib/这个时候就给了操作系统第二次选择机会就是去环境变量里面寻找动态库的地址但是当我们再次登入这个xshell时候会重新读区配置文件重新设置环境变量临时的怎么把它变成永久化设置到对应的配置文件中家目录配置文件中.bash_profile .bashrcvim ~/.bash_profile~代表家目录 /rootexport PATH/home/whb/code/code/118/bin:$PATHexport的作用是把他标记为环境变量静态链接.a 静态库编译时把库的全部机器代码复制、打包进最终可执行程序里运行时不再依赖原库文件。动态链接.so 动态库编译只记录库名、函数符号不复制代码程序运行时系统才去磁盘加载 .so 文件。1.头文件分离问题2.如果同时存在动静态库呢如果同时存在动静态库优先进行动态链接要是一定要静态链接 gcc -o myexe main.c -L myc/lib -lmyc -static:建议编译器优先使用静态链接只提供静态库不加static动态链接的局部静态整体动态把.exe用到的部分进行静态链接拷贝其他使用的是动态链接3.你要是使用/lib64里面的库需要写-l库的名称
广域网学习笔记-GRE实验配置 VPN 基础总述1. VPN 定义VPN 全称虚拟专用网络,作用是在公共互联网上,通过封装、加密技术搭建一条逻辑隔离的私有传输通道,让分布在不同地理位置的企业内网能够安全互通,如同处于同一局域网。2. VPN 两大核心分类二层 VPN…
自制交流电断点检测器:原理、制作与工程实践 那天下午,我正在调试一台老设备,电源指示灯正常,但电机就是不转。用万用表一段段查,折腾了半个多小时,最后发现是一根看似完好的交流电源线内部断了,断点藏在绝缘皮底下,肉眼根本看不出来。这种…
Mythos能力跃迁:动态推理图谱与跨文档验证技术解析 1. 项目概述:一次被刻意“锁住”的能力跃迁如果你最近关注大模型前沿动态,大概率已经看到“Anthropic Mythos”这个词在技术圈悄然升温。它不是新发布的模型,也不是某个开源项目,而是Anthropic内部代号为Mythos的一组核心能力模块…
宝珀官方售后服务中心电话和门店地址实地考察报告+多信源验证(2026年7月更新) - 宝珀官方售后服务中心 宝珀全国唯一的统一客户服务热线已于2026年7月正式启用400-883-8293,客服在线时间为每日8:00至22:00。本次实地探访选取了成都市与长沙市两个城市的直属售后服务中心,地址分别为:成都市锦江区人民东路6号SAC东原中心…
C++多项式运算实现:从数据结构设计到FFT优化 1. 项目概述:为什么要在C里折腾多项式?如果你是从C八股文或者算法题海战术里摸爬滚打过来的,看到“多项式”这个词,第一反应可能是“这不就是数学课上的东西吗,跟编程有啥关系?”。我以前也是这么想的&…
Laravel扩展包开发全流程指南与安全实践 1. Laravel扩展包开发概述在Laravel生态系统中,扩展包(Package)是增强框架功能的核心方式。作为一名长期使用Laravel的开发者,我发现优秀的扩展包能极大提升开发效率。不同于独立运行的Composer包,Laravel扩展包深度整合框架特性,…
C++多线程编程:死锁与竞态条件的原理、预防与解决方案 1. 项目概述:多线程编程的“暗礁”与“幽灵”在C的世界里,当我们为了榨干多核CPU的性能而拥抱多线程时,就仿佛一位船长驶入了充满机遇与风险的新海域。多线程能让我们程序的多个任务“齐头并进”,显著提升吞吐量和响应速度&#x…
前端HTTP请求方案对比:Fetch API与Axios详解 1. 前端HTTP请求的两种主流方案在现代前端开发中,HTTP请求是与后端交互的核心手段。目前主流方案主要有两种:浏览器原生提供的Fetch API和第三方库Axios。这两种技术各有特点,适用于不同场景。Fetch API作为现代浏览器的内置功能,…
CyberChef终极指南:如何构建你的网络安全数据操作工具箱 CyberChef终极指南:如何构建你的网络安全数据操作工具箱 【免费下载链接】CyberChef The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis 项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef Cyber…
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单 更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…
某智驾大牛创业 作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…
PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 在软件开发过程中,清晰的系统设计往往比编码本身更为关键。传统拖拽式UML工具虽然直观,却常常成为效率杀手——频繁的鼠标操作打断设计思路,版本控制困难,…
【RT-DETR涨点改进】29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 开篇故事 上个月帮一家安防厂商做项目优化,他们用RT-DETR做实时人流统计,部署在NVIDIA A10上。客户反馈说:“GPU利用率才30%,但延迟已经飙到40ms了,加人流量就丢帧。” 我远程一看,好家伙——生产环境里每个请求单独…
Postman 环境变量实战:3种动态设置方法与CI/CD集成避坑指南 Postman 环境变量高阶实战:动态管理与 CI/CD 深度集成在接口自动化测试领域,环境变量的灵活运用往往成为区分初级与高级测试工程师的关键能力。本文将深入探讨 Postman 环境变量的三种动态设置模式,并分享 Newman 在 CI/CD 流水线中的实战避坑…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…