2014-02-21 26 views
1

更復雜的問題在這種情況下已經在其他地方提出並回答:這個問題可能太重要了。在集羣中,我編譯並鏈接到/ usr/local/lib頭節點上的共享boost庫的程序,並且此boost版本比集羣發行版提供的版本更新。該程序在頭節點上運行良好,因爲我導出了LD_LIBRARY_PATH。如果我嘗試使用扭矩調度程序來運行它,這些庫在計算節點上不可用,從而產生「加載共享庫時出錯...」。除了重建boost作爲靜態庫並以這種方式鏈接程序之外,是否有一種簡單的方法可以使這些庫可用於所有節點?只需在作業腳本中導出路徑,即使用扭矩在頭節點上製作本地共享庫可用於計算節點,使用扭矩

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 

不起作用,因爲顯然該路徑在計算節點上不存在。這看起來像這樣一個愚蠢的問題,但是將頭節點上的本地對象用於所有計算節點的最簡單方法是什麼?

回答

1

人們這樣做的最常見方式是將庫安裝在計算節點上。有時這意味着將其安裝在節點的一個子集上,用一個功能標記這些節點,然後要求該功能用於特定作業將使用的節點。其他時候,它將庫安裝到各處,以便您不必擔心,但這是解決此問題的最常見方法。

如果版本控制太難以在計算節點上管理,那麼將該庫靜態編譯到程序中可能是您​​擁有的唯一選項。

+0

dbeer,謝謝你的解釋。親切的問候// rolf – Rolf