这些库是特定于操作系统的还是特定于编译器的?

问题描述 投票:0回答:1

我正在 fedora 16 上使用 gcc 学习 C。我有几个关于库的问题。

  1. 第三方库(操作系统和编译器之外)是特定于操作系统、特定于编译器还是特定于编程语言的?

  2. 是否有一个通用程序可以将库安装/添加到编译器中?

  3. 图书馆到底包含什么?需要编译的原始源代码还是机器代码?

c libraries fedora
1个回答
2
投票
  1. 这都是可能的。有些是特定于操作系统[系列]的(如 POSIX 系统上的

    unistd.h
    ),有些是特定于编译器的(没有想到具体的例子),有些是特定于语言的(例如 boost 特定于 C++)

  2. 不,不幸的是。尽管在 posix 系统上,它在文件夹结构上非常标准化。

  3. 这取决于“图书馆”的定义。有些库仅包含头文件,有些库可以通过将源文件集成到构建过程中来使用(例如 sqlite 附带一个源文件,称为“合并”),有些库以二进制形式提供。还有一些在运行时加载的库(POSIX 上的共享对象、Windows 上的动态链接库)。

静态库可能包含二进制代码(不一定是可执行的原样代码),并且通常包含可用函数/类的索引,用于告诉在库中的何处查找内容。

动态库通常包含与位置无关的代码,除了内部具有相对地址之外,还可以执行。

天空是极限。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.