簡體   English   中英

編譯aarch64二進制bash腳本

[英]Compile aarch64 binary bash script

我在x86-64機器上使用shc將bash腳本轉換為可執行二進制文件。 這在我的機器上運行良好,但是我打算將其推送到aarch64機器上。 將二進制文件復制到aarch64計算機后,出現以下錯誤:

無法執行二進制文件:Exec格式錯誤

這似乎是由於二進制文件未格式化為在此OS上運行而引起的。 有誰知道一個工具,該工具會給我一個可以在aarch64上執行的二進制文件(似乎shc可以做到這一點)。

編輯 :file命令將其打印出來(在aarch機器上):

用於GNU / Linux 2.6.32的ELF 64位LSB可執行文件,x86-64版本1(SYSV),動態鏈接,解釋器/lib64/ld-linux-x86-64.so.2、BuildID[sha1]=f6f72e60c9ae8c2fd3abe5aa47f9ba6be7000be6 ,剝離

只需確認該文件適用於x86-46

簡短的答案是在目標操作系統上編譯二進制文件。 man頁:

shc本身不是cc之類的編譯器,而是對shell腳本進行編碼和加密,並生成具有附加到期功能的C源代碼。 然后,它使用系統編譯器來編譯行為與原始腳本完全相同的剝離二進制文件。

編譯產生一個包含機器代碼的目標文件。 機器代碼“可以被視為編譯或組裝的計算機程序的最低層表示,或被視為原始的和硬件相關的編程語言”(請參閱https://en.wikipedia.org/wiki/Machine_code )。 在SunOS 11.3 SPARCv4上編譯源代碼所產生的機器代碼將不包含與在AIX PowerPC8上編譯相同源代碼所產生的機器代碼相同的指令。

謝謝masseyb。 看到您的評論時,我只是在嘗試。 現在,我已經在arm機器上使用了編譯器,因此可以正常工作。

暫無
暫無

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

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