Boost C++ Libraries

PrevUpHomeNext

如何在 Unix 上控制程式庫連結順序?

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


PrevUpHomeNext