簡體   English   中英

在其他Linux計算機上運行已編譯的Linux可執行文件

[英]Running compiled Linux executable on other Linux computers

我一直在研究一個自定義程序,該程序使我可以控制網絡上的其他基於Linux的計算機。 我一直在使用Python,並使用PyInstaller將代碼編譯成Linux可執行文件。 在我自己的計算機上運行可執行文件可以正常工作,並且完全可以達到預期的效果。 但是,一旦將其發送到另一台計算機進行測試,就會收到此錯誤。

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.25' not found (required by /tmp/_MEIXcUz91/libudev.so.1)
[3716] Failed to execute script RP

還有我用來使用PyInstaller編譯代碼的命令

python pyinstaller.py -D -F -n RP -c RP.py

同樣,可執行文件可以在我用來創建和編譯它的計算機上完美運行,但是一旦將其發送到另一台基於Linux的計算機上並執行它,它就會崩潰。

問題是您在兩台計算機上有不同的C系統庫。 移植預構建的二進制文件有時會遇到困難。 確保您使用的是類似環境,或者將所有依賴項放入二進制文件中-這可能會大大增加二進制文件的大小。 為此,您需要在編譯過程中使用“ --static”關鍵字。 不過,我不確定這是否足夠。

編輯:

由於這是一個純Python項目,因此應確保所使用的Python版本兼容,即,相同的Python版本以及相同的Python構建(CPython等)。

如果您的文件是RP,請使用ldd ldd RP-尋找動態,以便可執行文件使用的庫(如果您可以將程序鏈接更改為靜態庫),則可以使其具有更高的可移植性,否則您將不得不使用相同版本的linux運行您的程序。 您還可以將.so依賴項與可執行文件打包在一起,但是很混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM