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

时间:2011-11-11 18:29:11

标签: compiler-construction libraries fedora

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

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

  2. 是否有一个通用的过程来将库安装/添加到编译器中?

  3. 图书馆究竟包含哪些内容?要编译的原始源代码还是机器代码?

  4. 提前致谢

1 个答案:

答案 0 :(得分:2)

  1. 这一切都是可能的。有些是OS [-family]特定的(如POSIX系统上的unistd.h),有些是特定于编译器的(没有特定的例子可以想到),有些是特定于语言的(例如,boost特定于C ++)

    < / LI>
  2. 不,不幸的是。虽然在posix系统上,它在文件夹结构上非常标准化。

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

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

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

    天空是极限。