第一次使用boost - 为什么我不必在构建时明确链接到它?

mat*_*975 1 c++ linker boost g++

在回答我最近的一个问题时,有人建议我在boost中使用一个函数来解决我的问题.这是我第一次使用boost,所以我添加了以下.hpp文件

#include <boost/algorithm/string.hpp>
Run Code Online (Sandbox Code Playgroud)

和函数调用

boost::replace_all(marketPrices, "\\:", "-COLON-");
Run Code Online (Sandbox Code Playgroud)

到我的源文件,然后运行make来正常使用g ++构建我的应用程序.

此时我意识到我没有在makefile中的链接步骤中添加任何新库,并完全期望链接步骤失败.令我惊讶的是,它并没有失败 - 不仅如此,而且代码完全按照应该没有任何投诉的方式运行.

这至少让我惊讶 - g ++如何知道链接到什么以及为什么会自动这样做?或者我错过了一些与boost库运行方式相关的基础知识?我知道,提升使用了大量的模板的,这是C++,我不是太熟悉,所以我想知道如果这也许有事情做与我所看到的一个方面.

Dav*_*eas 7

一些boost库只是header-only,意味着没有二进制文件可以链接.其他类似的库boost::thread将要求您向链接器添加新的库.