Boost C++ Libraries

PrevUpHomeNext

如何在 Unix 上控制库链接顺序?

在类 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 ;


PrevUpHomeNext