链接程序和库指南

库命名约定

根据约定,通常指定共享库具有前缀 lib 和后缀 .so。指定归档具有前缀 lib 和后缀 .a。例如,libc.so 是可用于编译环境的标准 C 库的共享版本。libc.a 是库的归档版本。

这些约定可由链接编辑器的 -l 选项识别。此选项通常用于为链接编辑提供其他库。以下示例指示链接编辑器搜索 libfoo.so。如果链接编辑器未找到 libfoo.so,则在继续搜索下一个目录之前将搜索 libfoo.a


$ cc -o prog file1.c file2.c -lfoo

注 –

在编译环境和运行时环境中使用的共享库都遵循相应的命名约定。编译环境使用简单 .so 后缀,而运行时环境通常使用带有附加版本号的后缀。 请参见命名约定协调版本化文件名


当链接编辑处于动态模式时,可以选择同时链接共享库和归档。当链接编辑处于静态模式时,仅接受归档库作为输入。

在动态模式下使用 -l 选项时,链接编辑器首先搜索给定目录以查找与指定名称匹配的共享库。如果未找到任何匹配项,则链接编辑器将在相同目录中查找归档库。在静态模式下使用 -l 选项时,将仅查找归档库。