不同平台CRT的区别?什么是UCRT?如何看libc源代码?

不同平台CRT的区别?什么是UCRT?如何看libc源代码?微软有两套 CRT 早期的 MSVCRT 和 Windows 10 自带的 UCRT UCRT 支持基于 C 调用约定的稳定 ABI 且谨遵 ISO C99 标准 微风不燥 阳光正好 你就像风一样经过这里 愿你停留的片刻温暖舒心

欢迎大家来到IT世界,在知识的湖畔探索吧!

若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!


CRT运行时库

C标准规定例如输入输出函数、字符串函数、内存操作等接口,一般采用C运行时库实现。

微软的CRT

  • 微软有两套CRT,早期的MSVCRT和Windows 10自带的UCRT. UCRT 支持基于 C 调用约定的稳定 ABI,且谨遵 ISO C99 标准(仅有少数例外)。 它将不再绑定到特定版本的编译器。
    • 可参考:将代码升级到通用 CRT | Microsoft Learn
    • https://learn.microsoft.com/zh-cn/cpp/porting/upgrade-your-code-to-the-universal-crt?view=msvc-170
  • VS2015用UCRT代替MSVCRT, UCRT采用C++编写,而非之前的C语言。

macOS CRT

  • Mac有些独特,它的CRT位于libSystem.dylib,为了管控版本,一般会链接到当前版本文件libSystem.B.dylib.

Linux CRT

  • Ubuntu libc路径:/lib/x86_64-linux-gnu/libc.so.6.

什么是UCRT?

从Visual Studio 2015开始,CRT被重构成UCRT. UCRT已变成Windows 10组件的一部分。UCRT统一了微软对于不同子平台CRT不同的缺点,可以统一维护。

  • 示例:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x86\ucrt.lib

如何查看libc源代码?

GNU libc

  • Index of /pub/gnu/glibc
  • http://ftp.gnu.org/pub/gnu/glibc/
  • 源代码在线查看:2.39版本 Glibc source code (glibc-2.39) – Bootlin
  • https://elixir.bootlin.com/glibc/glibc-2.39/source

macOS libc

  • GitHub – apple-open-source-mirror/Libc
  • https://github.com/apple-open-source-mirror/Libc

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/137264.html

(0)
上一篇 18分钟前
下一篇 2025年 2月 11日 下午9:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信