2010-08-23 28 views
2

我想知道哪個Linux發行版最好(即引入最少的依賴關係),當鏈接一個應該儘可能多的發行版對共享庫的工作的二進制文件。我應該鏈接哪個Linux發行版以獲得最佳二進制兼容性?

我已經在Ubuntu上完成了它,但依賴列表是可怕的。 SDL引入了PulseAudio等等。我的下一個猜測是使用Debian lenny--在你看來,最好的發行版本是什麼?

+0

投票結束,因爲這顯然是一個主觀的問題,在不同的發行版上有太多的意見......並且這不是一個編程問題....請參考Superuser.com或serverfault.com – t0mm13b 2010-08-23 20:58:01

+1

我不是問哪個分佈是「最好的」,我要求提供分佈的建議,儘可能少地引入依賴關係。這不是關於編程,而是編譯 - 與IMO有關。 – Noarth 2010-08-23 21:08:24

+1

問題是相關的。 – ypnos 2010-08-24 09:12:19

回答

0

如果您看QT文檔http://doc.trolltech.com/4.6/deployment-x11.html「創建應用程序包」部分,他們建議創建一個像Mac包一樣的包,並使用shell腳本啓動它。

你可以做同樣的事情;你將不得不創建你需要的庫,並將它們包含在你的包中,這會使它更大。至少這應該鼓勵你只鏈接到你需要的庫:)

+0

很好的鏈接,謝謝。我計劃包含所有必需的共享對象 - 除了LSB庫之外。你建議我自己建立我需要的庫嗎?我可能會構建如果我這樣做的話,SDL幾乎沒有依賴關係,但我不確定我可以如何教CMake與之相關聯。 – Noarth 2010-08-24 04:52:51

+0

我沒有看到需要重建已經構建的庫,只要您有權重新包裝它們與您的應用程序,並且您的應用程序將動態鏈接到它們。如果你自己構建它們,你會更瞭解它們的依賴關係。 – koan 2010-08-24 11:03:34

+0

是的,我也可以擺脫一些。我正在查看WorldOfGoo附帶的libSDL,它有大約6個依賴關係。然而,在Ubuntu上安裝的軟件包大約有10個。另外,這些庫需要比libstdC++和libc更新的版本。 Debian lenny。 – Noarth 2010-08-24 18:14:34

3

如果您不想發佈源代碼並使用安裝腳本在目標系統上編譯它,請提供靜態鏈接的所有內容或發佈自己的文件,並在用於啓動您的腳本中使用LD_LIBRARY_PATHLD_PRELOAD環境變量可執行文件。 (關於如何完成的一個例子可以在mozilla firefox包裝中看到)

也有法律問題適用:從不使用GPL代碼。並且永遠不要與LGPL代碼進行靜態鏈接(以及其他問題)。

任何其他解決方案都會給運氣好壞帶來太多空間,並且只會產生挫折感。

+0

哦,非常好的提示與靜態鏈接和LGPL代碼,我會錯過的... – Noarth 2010-08-24 04:53:41

1

如果我沒有記錯,在一個將pulseaudio作爲SDL依賴項的發行版上與SDL鏈接並不意味着您的程序必須始終與每個發行版中的pulseaudio鏈接。你實際上不必在編譯器上輸入-lpulseaudio,是嗎?我的Ubuntu盒子上的sdl-config --libs沒有列出它。

+0

它沒有列出pulseaudio,但如果你檢查libDDL的libSDL.so,它會列出pulseaudio等其他東西。 – Noarth 2010-08-24 04:24:54

+1

問題是你的編譯的二進制文件只包含libSDL.so引用,而不是對pulseaudio的引用。在目標機器上,動態鏈接器只會嘗試首先解析您對libSDL.so的引用。然後,如果libSDL.so引用其他庫,它將搜索它們。他們可能包括pulseaudio,可能不會。您的二進制文件將無需pulseaudio即可連接。 – ypnos 2010-08-24 09:15:48

1

爲Linux生成軟件的正確方法是將每個版本的源代碼tarball放在你網站的穩定位置,並讓分佈處理所有其他事情。不要嘗試自己製作二進制文件。你會從無盡的悲傷中拯救自己。

+0

它不是開源的。我想這就是Linux上專有軟件的禍害:) – Noarth 2010-08-24 04:25:16

+1

那麼,在這種情況下,正確的做法是爲每個你認爲你的用戶可能需要的發行版建立適當的,符合策略的軟件包(我至少會做Fedora, Debian和SuSE)。 Skype的人們這樣做,它對最終用戶來說效果不錯。對於你來說,比純粹的源代碼發佈工作要多得多,但是與靜態鏈接或依賴最小化相比,它的工作量還是比較少。 – zwol 2010-08-24 05:01:02

相關問題