我正在 fedora 16 上使用 gcc 学习 C。我有几个关于库的问题。
第三方库(操作系统和编译器之外)是特定于操作系统、特定于编译器还是特定于编程语言的?
是否有一个通用程序可以将库安装/添加到编译器中?
图书馆到底包含什么?需要编译的原始源代码还是机器代码?
这都是可能的。有些是特定于操作系统[系列]的(如 POSIX 系统上的
unistd.h
),有些是特定于编译器的(没有想到具体的例子),有些是特定于语言的(例如 boost 特定于 C++)不,不幸的是。尽管在 posix 系统上,它在文件夹结构上非常标准化。
这取决于“图书馆”的定义。有些库仅包含头文件,有些库可以通过将源文件集成到构建过程中来使用(例如 sqlite 附带一个源文件,称为“合并”),有些库以二进制形式提供。还有一些在运行时加载的库(POSIX 上的共享对象、Windows 上的动态链接库)。
静态库可能包含二进制代码(不一定是可执行的原样代码),并且通常包含可用函数/类的索引,用于告诉在库中的何处查找内容。
动态库通常包含与位置无关的代码,除了内部具有相对地址之外,还可以执行。
天空是极限。