![]() |
在類 Unix 作業系統中,呼叫連結器時指定靜態程式庫的順序非常重要,因為預設情況下,連結器只會對程式庫列表進行一次掃描。以錯誤的順序傳遞程式庫將導致連結錯誤。此外,這種行為通常用於使一個程式庫覆蓋另一個程式庫中的符號。因此,有時需要強制指定程式庫連結順序。
Boost.Build 會嘗試自動計算正確的順序。主要規則是,如果程式庫 a
「使用」程式庫 b
,則程式庫 a
將在命令列中顯示在程式庫 b
之前。如果程式庫 b
出現在程式庫 a
的原始碼中,或者其用途列在其需求中,則程式庫 a
被視為使用 b
。要明確指定「使用」關係,可以使用 <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 ;