2011-12-20 29 views
1

Folk,Linux - 如何修復可執行映像中的共享庫鏈接?

我創建了一個基於Linux的可執行文件。我想設置它,使用戶可以簡單地下載和使用。只要用戶使用Ubuntu 11.xx的x86版本,他們應該只能運行該應用程序。

我想弄清楚的問題是如何處理共享庫。例如,我的可執行文件可能需要libxxx.so.23,但用戶可能有libxxx.so.22。對於我正在使用的功能,該應用程序可以使用任何版本的軟件。

看着類似的帖子,建議是在兩個版本之間創建一個新的符號鏈接。

問題是我不能指望用戶坐下來爲所有的依賴關係創建符號鏈接。

必須有更好的方法來創建一個準備好大規模分發的簡單可執行文件。顯然,通過apt-get下載的軟件包似乎會自動處理這個問題。

我感謝您的幫助。

問候, 彼得

+0

NB即製造不同版本的共享庫之間的符號鏈接將不能可靠地工作。 – 2011-12-20 19:16:11

回答

0

我會建議爲您的應用程序創建靜態構建。 當您創建構建時,與libxxx.a(靜態庫)進行鏈接。

Or you can create the .deb (for ubuntu and debian) package. 
It will resolve the library dependencies. 

通過 SIVAķ

2

靜態編譯軟件包,因此它不依賴於任何特定的.so文件(S)

包在APT和類似的基於二進制包管理器通常依賴於準確版本的庫,所以,例如,nmap-2.2.3取決於libpcap-1.1.2,所以它總是鏈接到相同的.so