abc*_*abc 6 c linker operating-system
我理解Linux附带了ac库,它实现了ISO C函数和系统调用函数,并且这个库在开发C时可以链接.但是,不同的c编译器不一定产生可链接的代码(例如,可能填充数据结构)在函数参数中使用的与另一个不同).当我可以使用任何编译器编译我的C时,内置的c库是如何链接的?静态与动态链接的故事有何不同?
另一方面,在Windows下,每个编译器都提供自己的标准库,它解决了部分问题,但系统调用仍然在一组DLL中.C应用程序如何成功链接到这些DLL?不同语言怎么样?(相同的DLL可以由pre.Net Visual Basic等使用)
每个平台都有一些“调用约定”,每个 C 实现都必须遵守这些约定,以便能够正确地与操作系统对话。例如,对于 Windows,所有基于操作系统的函数都必须使用stdcall约定来调用,而不是默认的 C 约定cdecl。
在 Linux 中,由于标准 C 库(和内核)是使用 GCC 编译的,因此任何其他 Linux 编译器都必须确保其调用约定与 GCC 使用的调用约定兼容。
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |