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

Compiler construction 这些库是特定于操作系统还是特定于编译器?,compiler-construction,libraries,fedora,Compiler Construction,Libraries,Fedora,我正在Fedora16上使用gcc学习C。我有几个关于图书馆的问题 第三方库(操作系统和编译器之外)是特定于操作系统的、特定于编译器的还是特定于编程语言的 是否有一个将库安装/添加到编译器中的通用过程 库究竟包含哪些内容?要编译的原始源代码还是机器代码 提前谢谢 这都是可能的。有些是特定于OS[-family]的(比如POSIX系统上的unistd.h),有些是特定于编译器的(没有想到具体的例子),有些是特定于语言的(例如boost是特定于C++) 不,很遗憾。虽然在posix系统上,它在文件夹

我正在Fedora16上使用gcc学习C。我有几个关于图书馆的问题

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

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

  • 库究竟包含哪些内容?要编译的原始源代码还是机器代码

  • 提前谢谢

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

  • 不,很遗憾。虽然在posix系统上,它在文件夹结构上非常标准化

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

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

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

    天空是极限