3

我的團隊準備發佈我們的Linux程序的第一個版本,並希望以最簡單的方式(對於用戶)這樣做。分發靜態鏈接的ELF 32位二進制文​​件 - 它可以在所有平臺上運行嗎?

該程序不需要外部文件,不需要安裝,並且是靜態鏈接的。

ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.15, not stripped 

我的問題是這樣的二進制文件是否可以在大多數Linux平臺上運行(Ubuntu,Redhat,OpenSuse等)?

我也有點擔心它說'對於GNU/Linux 2.6.15'的部分,這是否意味着他們需要內核2.6.15或更高?

回答

3

不推薦完全靜態鏈接的程序。

可移植性層從內核調用移動到基本庫(請記住pthread desaster和LinuxThreads的問題< - > NPTL線程?)。

按照LSB 4.0標準。相信那裏提到的庫的存在(不幸的是沒有那麼多),並將所有其他共享庫與您的應用程序捆綁在一起。有一個鏈接器標誌 - 我認爲它是-L - 在共享庫加載過程中,您可以設置一個優先於所有其他設置的ldd路徑,因此您的libs總是首先加載。

確保所有的庫只調用LSB批准的API函數(或者查看LSB網站,查看不支持的LSB API調用的嚴重程度 - 有時您根本無法避免它,並且它們有一個支持此調用的分發)。

這是推薦二進制可執行文件的推薦方式。與Windows/MacOSX相比,它仍然在Linux上吸引很多。

+0

好的,感謝您的信息,我會研究它。 – Nick 2010-08-31 02:46:33

相關問題