2016-11-12 78 views
1

如果我有一個在Ubuntu中使用gcc或QtCreater生成的ELF二進制文件,這個二進制文件可以在另一個Linux發行版中執行,例如RHEL?
(我猜純CLI程序可以,但GUI程序依賴)
32位二進制文​​件可以在64位機器上運行,反之亦然?ELF二進制文件在不同的linux分佈

+0

它取決於幾個因素(鏈接,依賴關係等) – rkosegi

+0

x86_64程序將不會在IA-32系統上運行。但是,IA-32程序應該在x86_64系統上運行。 – Michas

回答

1

是的。只要架構兼容,ELF二進制文件就可以在不同的系統上運行。也就是說,32位x86 ELF可以在64位x64系統上運行。

這就是說,這並不意味着你的程序甚至會啓動。它仍然要求滿足所有運行時相關性。這主要包括程序使用的每個共享庫。如果它們在運行的機器中不可用,程序將不起作用。

您可以使用objdump -p <program | grep NEEDED檢查所需的共享庫。如果它們不適用於您的taget系統,您還可以分發SO文件並修改LD_LIBRARY_PATH以加載它們。

但即使共享庫得到滿足,程序也不能保證能正常工作。您仍然可能會錯過配置文件,字體,系統服務,內核功能......您將不得不在每個您希望支持的發行版上進行測試。 PS:所有的說法是,CLI和GUI程序之間的問題在概念上並不相同。這只是GUI程序往往有更多的依賴關係......