我自己关于C语言,编译器,标准库,GUN glibc,CRT ,API之类的理解。
先声明,只是我自己看了一些东东的想法。
因为以前这一套东东太缠绕人了。
C语言,是一种语言标准,和它对照的是C++,JAVA,BASIC,FORTRAN,PASCAL等等概念。它定义的是自己一套适用于计算机的标准规范。如关键字,数据类型,表达式,语句结构等等,它不包含强制具体的实现,没有强制INT数据类型的长度一定是4等。这种具体而微的定义,一般是各编译器厂商实现的。所以,那本经典的二人合著本的C教材第二版,其实很薄。真正C语言标准的内容,不多。
编译器和标准库,其实是不同的厂商依据C语言标准的具体实现。就像马克思指出了共产主义的大约标准样子,而老毛试图来实现。GCC,TURBO,MICROSOFT(有什么是它不作的么??),编译器将程序编译,链接后形成可执行文件或库文件(静态,动态的)。其实,我感觉,编译器也不一定非要搞成一个汇编代码,只是为了方便调试。所以一般会先生成汇编代码再生成O中间目标文件。
而各个编译厂家一般都会带一套标准库,用于程序开发。标准库的标准,也有不同说明,POSIX,ISO等等,这个库是最难说清楚的。而我最个人的理解就是:其实标准库只是定义一套在计算机上实现的功能,它不和具体操作系统耦合,保证了超标准和可移植性。标准不但针对应用程序开发,也针对操作系统开发。就像LINUS写LINUX时,也遵从了POSIX的标准。如果微软的CRT只适合微软,那也就失去了通用性了。因为计算机毕竟并不是微软的代名词。这里有个很有趣的现像。在中国,很大比例的电脑用户眼中,电脑就是WINDOWS。WINDOWS是好,但微软独裁就不好,刻意打压对手就不好。我们也不像以前一样,像个P民一样刻意的相信上层管理者是个自觉的管理 者,管理者是不需要约束的。总之,宁愿受两只狼的管理,也不愿受一只羊的管理。其中人性,冷暖自知。。。扯完了,零乱了。
标准库,就和GLIBC,CRT之类的扯上了。
至于API,(API并不专指WINDOWS,MFC才专指微软,就像SQL就不就是MS SQL一样)。是具体的操作系统为用户提供的开发接口。它是真正存在而只服务操作系统而不服务于标准的。那么,如何保证标准C程序的可移植性呢?就在API上再包装一下。FOPEN,FCLOSE之类的。。真是一个尴尬的情形。人们通过C标准库功能实现了操作系统,操作系统要反为实现C标准库功能再来封装API。系统调用。。。
最近,又迷上了BIOS中断向量表和中断服务程序的实现,,一直没有好的入门。。。GDT,LDT,,,XXXXX,这个电脑世界神秘了。。我想在自己心里作一下马克思-韦伯说的“除魅”工作了。。。
《禅与摩托车修理艺术》,也快到手啦。。。
强烈推荐此URL,理清了程序界的一些大事。。。
C Runtime Library来历, API, MFC, ATL关系
http://www.cnblogs.com/chio/archive/2007/11/26/972152.html
以下转载其它网络介绍。
目录
- C/C++ 标准库与运行时库 | C/C++ Standard & Runtime Library
- 模式复用与基础功能 | Pattern Reuse & Basic Function
- 字符串处理 | String Handling
- 应用框架与图形用户界面 | Application Framework & GUI
- 通用功能 | General Function
- 线程 | Threads
- 科学与并行计算 | Scientific & Parallel Computation
- 网络功能 | Network Communication
- XML 功能 | XML Functions
- 持久存储 | Persistence & Storage
- 加解密 | Cryptographic
- 日志 | Logging
- 函数式编程 | Functional Programming
- 杂项 | MISC
-------------------------------------------
C/C++ 标准库与运行时库 | C/C++ Standard & Runtime Library
实现 ISO 的 C/C++ 语言规格标准中要求的标准库,每个组织或厂家的实现均有差异。在链接的二进制库中通常还伴随实现了平台特定的基础运行时库,例如 POSIX 标准。
ISO C/C++/POSIX 的标准如下:
- C99: ISO/IEC 9899-1999 (C Programming languages)
- C++2003: ISO/IEC 14882-2003 (C++ Programming languages)
- C++0x: ISO/IEC FCD 14882 (C++ Programming languages):第 3 版的 C++ 语言标准。关注发布页上的 Status 是否还是 Under development。
- POSIX Interface: ISO_IEC 9945-2-2003 (POSIX - Part 2: System Interfaces)
Microsoft C Run-Time Libraries & Standard C++ Library
- MSDN Run-Time Library Reference
- MSDN C Run-Time Libraries:讨论 Microsoft CRT、Standard C++ Library 对应的 lib 和 dll 文件。
- MSDN Standard C++ Library Reference:微软的标准 C++ 库参考,包括 STL 子集的参考。
- MSDN STL/CLR Library Reference:从 VC9 开始,微软的 STL 分为两种实现,一种是传统的 C++ 本地代码实现,另一种是托管 C++ 的 CLR 实现,称为 STL/CLR 库。这里是 STL/CLR 库的参考。
- What Every Computer Programmer Should Know AboutWindows API, CRT, and the Standard C++ Library, by Alex Blekhman:讲述Windows API、Microsoft CRT、Standard C++ Library 之间的关系,以及运行库的 Unicode、字符集编码问题,静态与动态链接问题。
微软的这一套运行时库,在功能和链接库上分为 3 个部分:Run-Time Libraries (CRT)、Standard C++ Library、CRT for Managed Code,分别对应的动态链接库为:msvcr[ver].dll、msvcp[ver].dll、msvcm[ver].dll。
VC8、VC9 采用了 Side-by-Side (WinSxS, Manifest) 方式部署 CRT 库,但在 VC10 中又去掉了 Side-by-Side 的部署方式。在 %SystemRoot%\system32 中有一个随 Windows 发布的 Known DLL:msvcrt.dll;而带版本号 [ver] 的库在 VC 或 VC Redistributable Package 中发布。
VC7 之后在 namespace stdext 中提供 hash_map、hash_set 两个扩展标准的容器模板。
GNU C/C++ Library
- GNU C Library
- Glibc 2 HOWTO 中文版
- The GNU C Library Manual
- GNU C++ Library:libstdc++ 在 GCC Collection 中发布。
- The GNU C++ Library Documentation
通常称为 GNU libc 和 libstdc++,是 GNU 的 C/C++ 标准库和运行时库的实现,在各种 Linux 发行版中都会安装该库,也是很多开源 C/C++ 程序选择的基础库。另外 libc 和 libstdc++ 也被移植到各种平台下,如 Windows 下的 MinGW 和 Cygwin 就包含 libc 和 libstdc++:
MinGW
- MinGW Home
- MinGW Sourceforge Project
MinGW: Minimalist GNU for Windows,在 Windows 平台提供一套 GNU 的开发环境,包括工具和开发库。MinGW 中包括对 GCC 和 GNU libc、libstdc++ 的 Windows 移植。
Cygwin
- Cygwin Home
发源于 RedHat 的 Cygwin 项目,目标在于在 Windows 下建立一套 Unix/Linux 环境,包括 X Window 这种 Linux GUI 基础库在内,所以又叫 Cygwin/X。Cygwin 实现的重点是 cygwin1.dll,它向其它 Cygwin 程序提供 POSIX 接口,并在内部转换成 Windows API 调用。Cygwin 中包括对 GCC 和 GNU libc、libstdc++ 的 Windows 移植。
我自己关于C语言,编译器,标准库,GUN glibc,CRT ,API之类的理解。相关推荐
- 【Go语言实战】13. Go语言context标准库(下)
13. Go语言context标准库(下) 1. API函数 2. 辅助函数 3. context的用法 4. 使用context传递数据真的那么好吗? 参考资料 接着上一届,我们继续学习Go语言的C ...
- log包在Golang语言的标准库中是怎么使用的?
Golang 语言的标准库中提供了一个简单的 log 日志包,它不仅提供了很多函数,还定义了一个包含很多方法的类型 Logger.但是它也有缺点,比如不支持区分日志级别,不支持日志文件切割等. 01. ...
- 常见15个C语言的标准库
C语言的标准库包括15个部分,每一个部分都有一个头描述.标准头主要由函数原型.类型定义以及宏定义组成.如果使用了标准库中的函数,就要将相应的标准头使用#include包含进来. 标准头名 功能 描述 ...
- C/C++——C语言标准、C语言标准库、 C标准库实现glibc, uClibc, Elibc
C语言标准 C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用,我也经常会使用C语言进行各种开发,使用过程中我们经常会听说 GUN C .AN ...
- python语言的标准库有哪些,python标准库函数有哪些
PyFlux库函数是什么? PyFlux是Python编程语言的开源时间序列库.PyFlux是Python中为处理时间序列问题而创建的开源库. 该库有一系列极好的时间序列模型,包括但不限于 ARIMA ...
- 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库
一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...
- Go语言常用标准库——log、net_http、strconv、time包
文章目录 log 使用Logger 配置logger 标准logger的配置 flag选项 配置日志前缀 配置日志输出位置 创建logger 总结 net_http net/http介绍 HTTP协议 ...
- Hello Go(十六)、Go语言常用标准库六
一.json 1.json简介 Go的标准包encoding/json对JSON的编解码提供了完整的支持. 2.编码 在编码过程中,json包会将Go的类型转换为JSON类型,转换规则如下: bool ...
- C语言、C标准库、glibc、Linux内核 之间的关系
首先 C 是一门语言,包含了一些规定的语法和结构,但并没有包含到我们平常所用的函数,如 printf() 和 scanf(),这些只是由 C 标准库所提供的.之所以存在 C 标准库,是因为这些已经编好 ...
最新文章
- hbase java api 两种方式
- RHEL7OSP-6.0的openstack云主机发放
- 论文辅助笔记(代码实现):Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo
- 二阶系统响应指标图_15. 闭环系统的频域性能指标
- 【机器学习】全面解析Kmeans聚类算法(Python)
- centos 安装 acrobat Reader之后
- 同一机器部署多个JVM
- 小程序是否转发群还是个人(转发功能)
- webstrom html校验css语法,webstorm ECMAScript 6 语法检查
- 数据仓库系列之元数据管理
- 计算机有自带的编程软件吗,cmd打开电脑自带软件
- iOS不能显示英文音标问题
- 有道云笔记迁移至语雀终极解决方案
- 大风车音乐计算机,大风车歌曲
- 计算机专业毕业论文选哪方面,计算机专业毕业论文格式有哪些要求
- 5G时代,玖玖星球云算链引领VR技术踏上新台阶
- 懂车帝:2018汽车行业大数据报告(附下载)
- 二,ES6中新增const关键字的使用方法
- gazebo添加末端六维力传感器
- Python遥感可视化 — Basemap作Albers投影
热门文章
- cadence 常见pcb电阻_高速PCB培训手记
- ping端口怎么ping_英雄联盟手游ping信号怎么发送 ping信号发送方法介绍_游戏攻略...
- linux centos7杀进程,centos7 nginx 启动/进程状态/杀掉进程
- prop在java中_jquery中attr和prop的区别
- Python __all__的作用
- Python案例:通过城市区域代码查询天气
- 列表视图案例1——阅读古诗
- 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2
- 14.图像透视——投影几何性质,平行线(Parallel Lines),消失点(Vanishing Point)_3
- 2017.8.8 loli测试