cpp-book/src/libraries/add-dependencies.md
2024-02-06 06:28:18 +08:00

42 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 如何将库加入项目依赖
对于在 C++中使用库的问题,主要是需要解决如何搜索到库的头文件以及动态链接库文件所在位置。
```admonish tip
实际上只要在代码中引用了指定目录中或者库中的头文件,那么在编译的时候就会自动的加入相应的库。
```
## 头文件的搜索
对于头文件C++编译器有两种搜索顺序。
当使用`#include "头文件名"`时,编译器会按照以下顺序进行搜索。
1. 文件所在当前目录。
1. 编译器使用`-I`指定的目录。
1. gcc 的环境变量`CPLUS_INCLUDE_PATH`中包含的目录。
1. gcc 内定的目录,包括`/usr/include`、`/usr/local/include`等。
当使用`#include <头文件名>`时,会按照以下顺序搜索。
1. 编译器 gcc 使用`-I`指定的目录。
1. gcc 的环境变量`CPLUS_INCLUDE_PATH`中包含的目录。
1. gcc 内定的目录,包括`/usr/include`、`/usr/local/include`等。
## 静态库文件的搜索
静态库文件会按照以下顺序搜索。
1. 编译器 gcc 使用`-L`指定的目录。
1. gcc 的环境变量`LIBRARY_PATH`中包含的目录。
1. gcc 内定目录,包括`/lib`、`/usr/lib`、`/usr/local/lib`等。
## 动态库文件的搜索
动态库文件会按照以下顺序搜索。
1. 通过编译器 gcc 参数`-Wl,-rpath`指定的动态库路径。
1. 环境变量`LD_LIBRARY_PATH`中包含的目录。
1. 配置文件`/etc/ld.so.conf`中指定的搜索路径。
1. 默认动态库路径`/lib``/usr/lib`。