16.3. 在 GCC 中使用库
库是可在您的程序中重复使用的代码软件包。C 或 C++ 库由两个部分组成:
- 库代码
- 标头文件
使用库编译代码
标头文件描述库的接口:库中提供的函数和变量。编译代码需要标题文件中的信息。
通常,库的标题文件将放置在与您的应用代码不同的目录中。要告诉 GCC 标头文件的位置,请使用 -I
选项:
$ gcc ... -Iinclude_path ...
使用标头文件目录的实际路径替换 include_path。
I 选项可
多次使用,以添加包含标题文件的多个目录。查找标头文件时,会在 -I
选项中按照其外观的顺序搜索这些目录。
使用库链接代码
当链接可执行文件时,您的应用程序对象代码和库的二进制代码都必须可用。静态和动态库的代码以不同的格式显示:
-
静态库可用作存档文件。它们包含一组对象文件。归档文件的文件名为
.a
。 -
动态库作为共享对象提供。它们是可执行文件的一种形式。共享对象的文件名为
.so
。
要告诉 GCC 库的存档或共享对象文件的位置,请使用 -L
选项:
$ gcc ... -Llibrary_path -lfoo ...
使用库目录的实际路径替换 library_path。
L 选项可
多次使用,以添加多个目录。查找库时,系统将按照其 -L
选项的顺序搜索这些目录。
选项顺序很重要:GCC 无法链接到库 foo,除非它知道这个库的目录。因此,使用 -L
选项来指定库目录,然后再使用 -l
选项链接到库。
在同一步骤中编译和链接代码使用库
当一个 gcc
命令中允许编译并链接代码时,请一次性对上述两种情况使用 选项。
其它资源
- 使用 GNU Compiler Collection(GCC)- 3.16 Options for Directory Search
- 使用 GNU Compiler Collection(GCC)- 3.15 选项进行链接