首页| 论坛| 消息

回复: 关于Qt国产化系统开发的几点总结
#6 回 swfeng 的帖子 [fsu0413 07-19 07:40]
swfeng:您好,为什么C库不一样,就会造成兼容性?我的理解是,C库的函数接口应该都是一样的,另外在同一个平台CPU下,编译出来的机器语言应该也是一样的,所以这样不管用谁家的C库,理论上都应该是兼容的。
本人小白,希望大佬能指导下。 (2024-07-17 09:50) 
“C标准库”确实是标准,但是这个标准只是源码级别的兼容,而不是二进制。
同一个平台CPU下,编译出来的机器语言一样也仅限于不使用标准库的时候。与标准库之间的接口就是和标准库有关。
举个更容易理解的例子。Windows就有两套标准库,一套msvcrt,一套ucrt,两套库都是系统自带,互相二进制不兼容。因为两套库文件名不一样所以本来就没法互换。
#7 回 fsu0413 的帖子 [swfeng 07-19 10:07]
fsu0413:“C标准库”确实是标准,但是这个标准只是源码级别的兼容,而不是二进制。
同一个平台CPU下,编译出来的机器语言一样也仅限于不使用标准库的时候。与标准库之间的接口就是和标准库有关。
举个更容易理解的例子。Windows就有两套标准库,一套msvcrt,一套ucrt,两套库都是系统自带 .. (2024-07-19 07:40) 
非常感谢您的回复。
我这样理解不知道对不对:我的程序调用标准库的接口,使用不同的编译器编译出来的程序,可能由于不同的编译器,对标准库的命名不一样,导致编译出来的程序,需要根据编译器对应的标准库命名来查找并调用标准库,所以会造成不兼容的问题。(根本原因是不同编译器使用的库名字可能不一样)
还望大神不吝赐教。
#8 回 swfeng 的帖子 [fsu0413 07-20 20:07]
swfeng:非常感谢您的回复。
我这样理解不知道对不对:我的程序调用标准库的接口,使用不同的编译器编译出来的程序,可能由于不同的编译器,对标准库的命名不一样,导致编译出来的程序,需要根据编译器对应的标准库命名来查找并调用标准库,所以会造成不兼容的问题。(根本原因是不同编译 .. (2024-07-19 10:07) 
只要编译器能生成兼容的机器码的话,和编译器关系倒是不大
编译器和标准库并不是对应关系,gcc和clang都能调用glibc,也都能调用mingw,msvc和clang都能调用msvcrt。

<< 1 2 >> (2/2)

回复 发表
主题 版块