2011-06-05 68 views
1

是否有任何可能的方式來運行另一個Linux上編譯的二進制文件?我知道當然最簡單的方法是在另一臺機器上重建它,但讓我們假設我們唯一能得到的是一個二進制文件,那麼可能與否呢? (我知道這可能不容易,但我只是好奇)。從一個Linux到另一個Linux的二進制文件

回答

1

如果libc版本相同,並且任何其他依賴共享庫都可用,那麼可以,您可以從其他Linuxes運行二進制文件。在目標平臺的二進制文件上使用'ldd -v'來查看是否有任何庫丟失。

2

鑑於二進制文件中使用了相同或相似的庫,通常可以這樣做。你經常在不同版本的Linux上使用不同版本的庫,並且最終會出現崩潰,但是經常可以運行ldd來查看可執行文件使用哪些庫,然後檢查第二個平臺以查看這些庫也存在。

2

雖然共享庫匹配的事情是非常真實的(使用ldd獲取需要相同的共享庫列表),但更一般地說,系統需要是相同的架構(或者爲x86安裝了兼容庫/內核在x86_64體系結構上運行的二進制文件)。

一種選擇是靜態鏈接(或提供自己的共享庫),以便您只需在內核ABI級別兼容。當然,這意味着使用非標準選項(NIS,LDAP等)的系統/分發版本有點混亂。

另一種選擇是分發.a文件並在目標系統上執行最終鏈接。這當然假設系統有一個編譯器,但可能是對象分佈最容易移植的。

但是,在所有情況下,您必須具有體系結構兼容性。 x86是最常見的分母,但決不是唯一的分母。

相關問題