






















Windows 就是这样做的,自 Visual Sutdio 2005 起,每个 VS 版本都自带一个 VC++ Runtime Redistributable (直到 VS2015 为止,后续全部使用单一可升级的 Runtime ),方便是方便了,缺点也是曾经存在过的:
早期有些工业软件和游戏在分发的时候顺便安装自己用着的 VC++ Runtime ,恰好电脑上另一个软件也用了同样大版本的 runtime ,但小版本号不同(已经给系统安装了新一点的版本),于是 runtime 就卡住安装不上,导致后续安装过程无法继续。
其实在同一个大版本的新 runtime 存在时,手动安装旧 runtime 是会提示 runtime 已经存在,不需要安装。然而那些软件/游戏开发商当时懒得理判断。过了几年 runtime 版本越来越多,他们才逐渐明白安装前需要做判断。
特别是自 VS2015 起,runtime 都是共用的,只不过新版本会覆盖旧版,开发商们必须判断 runtime 版本该不该安装。自此以后,无论是开发商还是用户,都不再需要受到 runtime 版本的困扰了。
------
其实自带 runtime 还有另一种方式:BSD 模式,或 Alpine Linux 模式
各大 BSD 的 libc 都如同 Alpine Linux 的 musl 那样,既能动态链接,也能静态链接(把 runtime 打包进最终程序)
在高版本 BSD 编译出来的 Native 程序,如果没有调用到高版本系统特有的 API ,那么静态链接后是可以在低版本 BSD 系统当中使用的。这一点跟 Windows 差不多。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。