初识linux(day 06)

发布时间:2026/10/17 7:00:10

初识linux(day 06) 今天介绍的有以下五个内容1.printf 的缓冲区问题 2.静态库的创建和使用 3.共享库的创建和使用 4.静态库与共享库的区别 5.各种命令库等文件的标准存放位置一printf 的缓冲区问题printf ( )的输出原理将需要打印在屏幕上的东西先存入缓冲区之中在缓冲区满足以下三种情况时会将缓冲区中的内容全部打印在屏幕之上:1.缓冲区满了 2.强制刷新缓冲区 \n ,fflush(stdout) (fflush刷新文件 stdout屏幕输出文件) 3.程序要退出了 exit()第一步刷新缓冲区 第二步_exit()退出程序在后面才会介绍到的fork函数中printf的缓冲区问题会被再次提到他对于输出结果的影响非常大本质上printf()其中调用了write()printf()中的数据先存放在缓冲区中在缓冲区刷新后将缓冲区的数据放入调用的write中从而进行打印write()不存入缓冲区直接进行打印 相较于printf( )write( )缺少用户态缓冲,每次调用都会触发系统调用大量短小输出时上下文切换频繁性能差 而printf( )自带用户态缓冲区在多次零散输出时会合并成少量系统调用 减少用户态→内核态上下文切换高频少量 IO 场景使性能更高二静态库的创建和使用**库**已经编译好的函数的集合静态库libxx.a 使用时会将库中函数的实现拷贝到文件中静态库的创建ar crv -o libxx.a xx1.o xx2.o ……xx1.o xx2.o …… 待打包的目标文件先由 gcc -c xxx.c 编译生成静态库的使用gcc -o main main.c -L路径 -l库名(如果生成的库放在了标准库中可以省略路径)三共享库的创建和使用共享库libxx.sowin中叫动态链接库在使用库时如果共享库和静态库同名Linux系统会默认使用共享库ldd命令:ldd程序名 查看程序所使用到的共享库共享库的创建gcc -shared -fPIC -o libxx.so xx1.o xx2.o ……xx1.o xx2.o …… 待打包的目标文件先由 gcc -c xxx.c 编译生成共享库的使用gcc -o main main.c -L路径 -l库名使用时默认在在/usr/lib 或/lib下查找 可省去地址当共享库不在标准位置时使用命令LD_LIBRARY_PATH. (将当前位置赋给变量共享库的储存路径)export LD_LIBRARY_PATH (将变量设置为环境变量)gcc -o main main.c -L路径 -l库名四静态库与共享库的区别静态库使用静态库会把库函数拷贝到可执行程序中但只拷贝用到方法函数共享库共享库只做标记不进行拷贝在运行程序时还需要链接共享库装载到内存中多个程序可共享使用 并不包含到可执行程序中共享库更利于程序的升级五各种命令库等文件的标准存放位置头文件的标准位置/usr/include存放二进制可执行程序命令的标准位置/usr/bin/bin存放库文件的标准位置/usr/lib/lib…
延伸阅读

更多相关文章

2026/10/17 6:59:52

dede php做网站?别被忽悠了!网页和网站差个十万八千里

对很多人而言, 对于网页究竟是什么, 一下子就处于那种完全摸不着头脑好似丈二和尚一般的状态。那网页到底是什么? 是效果图? 是代码? 是编程? 我表示 , 网页其实是它们融合而成的综合体 , 它里面的任何单独一项 , 都没办法称其为完整的情况。要是想要学会网页相关知识 , 那…

2026/10/16 4:57:02

2026-08-24:检查相邻数字差。用go语言,给定一个纯数字字符串,你需要检查其中任意两个紧挨着的数字,它们数值上的差距是否都不会超过 2。 如果整串数字中所有相邻位置都满足这个条件,就返回“是”

2026-08-24:检查相邻数字差。用go语言,给定一个纯数字字符串,你需要检查其中任意两个紧挨着的数字,它们数值上的差距是否都不会超过 2。 如果整串数字中所有相邻位置都满足这个条件,就返回“是”(true&…

2026/10/15 11:29:39

RAG的工作流程与目标

目录 RAG的工作流程: 知识库的构建: 调用: RAG的目标:如何提高Query和知识库的匹配度 如何优化Query: 如何优化知识库: 扩展:Embedding模型 RAG的工作流程: 上一节…

2026/10/17 7:00:01

iOS地图定位Demo拆解:CoreLocation+MapKit权限、坐标系与调试避坑指南

简介:这是一份iOS地图定位示例工程,专门面向刚接触Core Location与MapKit的移动开发初学者,帮助解决在iOS应用中获取用户当前位置、并将定位结果标注到地图上的基础需求,适合作为入门练习和功能演示的参考模板。压缩包共23个文件&…

2026/10/17 7:00:01

C++五子棋源码解析:人机/人人双模式与AI博弈实现

简介:一套用C实现的五子棋对战程序源码包,同时支持人机与人人两种模式,适合C初学者和游戏开发入门者学习类的设计、AI决策算法以及图形界面交互,可作为第一个完整的游戏练手项目。压缩包共收录7个文件,整体仅106KB&…

2026/10/17 7:00:01

Java学生宿舍管理系统毕设:JSP+Servlet+MySQL设计与实现详解

简介:这套基于Java的学生宿舍管理系统以SpringBoot为后台框架,采用Bootstrap构建前端界面,搭配MySQL数据库,适合高校毕业设计、课程实训以及刚接触后台管理系统的Java开发者。系统按角色划分三个入口:管理员可对学生、…

2026/10/17 7:00:01

模糊控制不再玄学:自适应模糊器从设计到调参避坑指南

简介:面向控制工程学习者与研究人员,围绕模糊控制及自适应模糊器设计,提供MATLAB Simulink环境下的完整实现方案,解决非线性系统智能控制建模与参数自整定问题,适用于课程设计、毕业设计及工程预研等场景。压缩包共426…

2026/10/17 7:00:01

Windows版Hydra实战:从环境配置到弱口令检测的完整指南

简介:面向Windows平台的Hydra暴力破解工具及配套密码字典合集,专为渗透测试人员、安全运维及口令安全研究者在授权环境下进行登录口令强度检测而准备。包内含完整可运行的hydra.exe及全套DLL运行库,另附密码检查工具、辅助脚本、示例文件等&a…

2026/10/17 6:55:01

AI辅助科研:赋能学术创新与高效科研成果产出的新路径探索

很多2026级新生刚入学或刚转博,就被开题报告这四个字整得心力交瘁。最崩溃的不是写不出来,而是你辛辛苦苦熬夜半个月翻出来的创新点,导师看一眼就冷冷地抛回一句:这个方向十年前就有人做透了,前沿性在哪?或…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

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

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

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