在类 Unix 操作系统上,在调用链接器时指定静态库的顺序很重要,因为默认情况下,链接器会对库列表进行一次遍历。以错误的顺序传递库会导致链接错误。此外,此行为通常用于使一个库覆盖另一个库中的符号。因此,有时需要强制特定的库链接顺序。
Boost.Build 尝试自动计算正确的顺序。主要规则是,如果库 a
“使用” 库 b
,则库 a
将出现在命令行中 b
之前。如果 b
出现在库 a
的源代码中或其使用情况在其需求中列出,则认为库 a
使用 b
。要显式指定 use
关系,可以使用 <use>
功能。例如,以下两行都将导致 a
在命令行上出现在 b
之前
lib a : a.cpp b ; lib a : a.cpp : <use>b ;
同样的方法也适用于搜索库。
lib z ; lib png : : <use>z ; exe viewer : viewer png z ;