我想知道哪個Linux發行版最好(即引入最少的依賴關係),當鏈接一個應該儘可能多的發行版對共享庫的工作的二進制文件。我應該鏈接哪個Linux發行版以獲得最佳二進制兼容性?
我已經在Ubuntu上完成了它,但依賴列表是可怕的。 SDL引入了PulseAudio等等。我的下一個猜測是使用Debian lenny--在你看來,最好的發行版本是什麼?
我想知道哪個Linux發行版最好(即引入最少的依賴關係),當鏈接一個應該儘可能多的發行版對共享庫的工作的二進制文件。我應該鏈接哪個Linux發行版以獲得最佳二進制兼容性?
我已經在Ubuntu上完成了它,但依賴列表是可怕的。 SDL引入了PulseAudio等等。我的下一個猜測是使用Debian lenny--在你看來,最好的發行版本是什麼?
如果您看QT文檔http://doc.trolltech.com/4.6/deployment-x11.html「創建應用程序包」部分,他們建議創建一個像Mac包一樣的包,並使用shell腳本啓動它。
你可以做同樣的事情;你將不得不創建你需要的庫,並將它們包含在你的包中,這會使它更大。至少這應該鼓勵你只鏈接到你需要的庫:)
很好的鏈接,謝謝。我計劃包含所有必需的共享對象 - 除了LSB庫之外。你建議我自己建立我需要的庫嗎?我可能會構建如果我這樣做的話,SDL幾乎沒有依賴關係,但我不確定我可以如何教CMake與之相關聯。 – Noarth 2010-08-24 04:52:51
我沒有看到需要重建已經構建的庫,只要您有權重新包裝它們與您的應用程序,並且您的應用程序將動態鏈接到它們。如果你自己構建它們,你會更瞭解它們的依賴關係。 – koan 2010-08-24 11:03:34
是的,我也可以擺脫一些。我正在查看WorldOfGoo附帶的libSDL,它有大約6個依賴關係。然而,在Ubuntu上安裝的軟件包大約有10個。另外,這些庫需要比libstdC++和libc更新的版本。 Debian lenny。 – Noarth 2010-08-24 18:14:34
如果您不想發佈源代碼並使用安裝腳本在目標系統上編譯它,請提供靜態鏈接的所有內容或發佈自己的文件,並在用於啓動您的腳本中使用LD_LIBRARY_PATH
和LD_PRELOAD
環境變量可執行文件。 (關於如何完成的一個例子可以在mozilla firefox包裝中看到)
也有法律問題適用:從不使用GPL代碼。並且永遠不要與LGPL代碼進行靜態鏈接(以及其他問題)。
任何其他解決方案都會給運氣好壞帶來太多空間,並且只會產生挫折感。
哦,非常好的提示與靜態鏈接和LGPL代碼,我會錯過的... – Noarth 2010-08-24 04:53:41
如果我沒有記錯,在一個將pulseaudio作爲SDL依賴項的發行版上與SDL鏈接並不意味着您的程序必須始終與每個發行版中的pulseaudio鏈接。你實際上不必在編譯器上輸入-lpulseaudio
,是嗎?我的Ubuntu盒子上的sdl-config --libs
沒有列出它。
爲Linux生成軟件的正確方法是將每個版本的源代碼tarball放在你網站的穩定位置,並讓分佈處理所有其他事情。不要嘗試自己製作二進制文件。你會從無盡的悲傷中拯救自己。
投票結束,因爲這顯然是一個主觀的問題,在不同的發行版上有太多的意見......並且這不是一個編程問題....請參考Superuser.com或serverfault.com – t0mm13b 2010-08-23 20:58:01
我不是問哪個分佈是「最好的」,我要求提供分佈的建議,儘可能少地引入依賴關係。這不是關於編程,而是編譯 - 與IMO有關。 – Noarth 2010-08-23 21:08:24
問題是相關的。 – ypnos 2010-08-24 09:12:19