C语言、C标准库、glibc、Linux内核 之间的关系
首先 C 是一门语言,包含了一些规定的语法和结构,但并没有包含到我们平常所用的函数,如 printf() 和 scanf(),这些只是由 C 标准库所提供的。之所以存在 C 标准库,是因为这些已经编好的函数是我们平常编程经常用到的,这可以方便我们的工作。当然,你也可以自己编写方便编程、属于自己的 C 库。C 标准仅仅是规定了接口,也就是仅规定了函数原型,或者说头文件,而具体的实现各有不同。glibc 库是其中一种对 C 标准的实现,由 GNU 完成,GNU C LIBRARY。我们平常写 C 程序时,为了可以用到一些规定好的函数,会在前面包含头文件,相当于函数原型声明。通过 gcc 对程序编译,然后链接 C 库,链接相当于将函数的具体实现连起来,最后形成二进制文件。
Linux 是由 C 语言编写的,它由自己的头文件和内核函数来实现内核的功能。内核的编写并不依赖于 C 标准库。
而且 C 标准库里面的一些函数是封装了 Linux 的系统调用的。
所谓的 POSIX 标准,是规定操作系统要提供哪些接口,但没有规定具体的实现。POSIX 标准包含了 C 标准规定的头文件和另外一些提供系统服务的头文件。通过 POSIX 接口,我们可以进行系统编程。
C语言、C标准库、glibc、Linux内核 之间的关系相关推荐
- 【Linux 内核】进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )
文章目录 一.进程特殊形式 ( 内核线程 | 用户线程 ) 二.C 标准库与 Linux 内核中进程相关概念 三.Linux 查看进程命令及输出字段解析 一.进程特殊形式 ( 内核线程 | 用户线程 ...
- linux 发行版本和 及其与linux内核之间的关系
1. Red Hat Linux是全世界应用最广泛的Linux,,它分为两个系列, 一个是Red Hat 公司提供收费技术支持和更新的Red Hat Enterprise Linux系列:一个是社区开 ...
- log包在Golang语言的标准库中是怎么使用的?
Golang 语言的标准库中提供了一个简单的 log 日志包,它不仅提供了很多函数,还定义了一个包含很多方法的类型 Logger.但是它也有缺点,比如不支持区分日志级别,不支持日志文件切割等. 01. ...
- 【Go语言实战】13. Go语言context标准库(下)
13. Go语言context标准库(下) 1. API函数 2. 辅助函数 3. context的用法 4. 使用context传递数据真的那么好吗? 参考资料 接着上一届,我们继续学习Go语言的C ...
- 常见15个C语言的标准库
C语言的标准库包括15个部分,每一个部分都有一个头描述.标准头主要由函数原型.类型定义以及宏定义组成.如果使用了标准库中的函数,就要将相应的标准头使用#include包含进来. 标准头名 功能 描述 ...
- Android版本与Linux内核版本的关系
Android版本与Linux内核版本的关系 一.Android版本与Linux内核的关系 英文名 中文名 Android版本 Linux内核版本 No 无 1.1 Cupcake 纸杯蛋糕 1.5 ...
- 内存(Display)、显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存。请用Python语言简要实现这些类及它们之间的关系。
内存(Display).显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存.请用Python语言简要实现这些类及它们之间的关系. clas ...
- 常见浏览器与浏览器内核之间的关系
背景: 原有项目确定为vue.js+chrome的企业应用管理软件,到客户现场实施时,发现硬件设备均为WinXp系统. 经了解得知,谷歌已经停止对WinXp的支持,同时,vue对IE,SE6版本支持性 ...
- 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库
一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...
最新文章
- MySQL:数据库优化,看这篇就够了
- 基于linux的驱动设计,《基于LINUX的虚拟驱动设计》-毕业论文.doc
- 装管家婆系统要开启那些服务器,管家婆服务器维护注意的一些事项?
- Linux IO复用区别与epoll详解
- [html] websocket和http有什么区别?
- 【mac】Mac 安装Brew命令
- 在Blazor中构建数据库应用程序——第1部分——项目结构和框架
- 参考文献的序号怎么对齐_学术论文发表写作格式、具体要求和参考文献的要求模板...
- php 二位数组排序
- SQL 查询所有表名、字段名、类型、长度、存储过程、视图
- lr压测mysql数据库_jmeter压测mysql数据库
- Python实战教程 | 轻松批量识别数百个快递单号
- myelicpes2019初次使用设置_实况足球2019球员数据编辑器怎么使用
- 几个连接虚拟机和云服务器的软件
- 基于百度飞桨的单/多镜头行人追踪(非官方Baseline)
- 如何搭建EOS主网节点?
- Windows 剪切板的应用——复制浏览器or本地目录图片
- uni-app--》如何制作一个APP并使用?
- 杰克.韦尔奇的《赢》读后节选
- 魔法宝石(类似dp 杭电排位赛-2)