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