glibc 2.x release note

glibc是gcc实现的c运行时库,也是linux下主要的c标准库实现。visual studio c运行时库为CRT,即Visual Studio 2019 C语言运行时库(CRT),位于

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\crt\src。

glibc 2.x release note,参见:

https://sourceware.org/glibc/wiki/Glibc%20Timeline

 https://www.gnu.org/software/libc/manual/pdf/libc.pdf

不同平台的C/C++标准库参见https://blog.51cto.com/u_15147256/5708692

对于c++服务端开发而言, windows sdk并不重要,因为国内大部分运行在linux环境下。而对于GUI开发而言,则是反过来,windows是最重要的平台,ms crt也就非常重要。

运行库:Linux下glibc和Windows下MSVC CRT对比,加载入口、版本子分支管理的对比都比较详细了。

Windows的C标准库为CRT​​(C runtime Library),从VS2015以后,CRT重写,改名为UCRT(UCRT相当于Linux上的glibc),之前为MSVCRT (Microsoft Visual C++ Runtime,后面在介绍Mingw时的编译例子会详细介绍) 。WIN10之后,UCRT已经是操作系统的一部分,对应的静态库,DLL,头文件等等都可以在Windows SDK中找到。那对于一些工具如pl/sql developer等来说,SDK就很重要了。

 

 Windows对应的C++标准库,微软把它也叫做"STL"(MSVC’s implementation of the C++ Standard Library.)。具体源码可以见[github](​ ​microsoft/STL: MSVC’s implementation of the C++ Standard Library. (github.com)​​)。

 C++标准库(动态链接)msvcprt.lib位于msvcp.dll,当你在代码中包含了C++标准库中的头文件时,编译器会自动将msvcp.dll链接到你的代码中。

   windows下使用msvc编译和使用mingw编译的结果差别,参见https://blog.51cto.com/u_15147256/5708692。一般来说,考虑到实际使用因素和体验、c++性能、稳定性,最后打包用vc/glibc分别编译,mingw只是早期为了验证下代码尽可能在windows/linux都兼容或者不用来回切换,纯粹的linux开发随着vs/clion等支持远程开发,mingw/cygwin已经完全没有了必要。就算考虑开发效率,也会使用boost等三方库封装好的多线程和网络库。

 注:clang现在也没有标准的c运行时库,只有c++。

posted @ 2018-10-07 11:03  zhjh256  阅读(131)  评论(0编辑  收藏  举报