簡體   English   中英

舊的ARM32二進制文件可以在AARCH64內核上運行嗎?

[英]Can old ARM32 binary files be run on AARCH64 kernel?

我很好奇在AARCH64-Linux機器上運行舊的ARM32-Linux程序的可行性,我進行了一些實驗:

  1. 寫一個程序“Hello,World!” 並使用arm-none-linux-gnueabi-gcc和aarch64-linux-gnu-gcc靜態編譯它。
  2. 使用busybox和aarch64編譯器靜態構建並創建ramdisk。
  3. 把2“你好,世界!” 程序(在ARM32和AARCH64中)到ramdisk。
  4. 使用vexpress_defconfig和aarch64編譯器構建一個簡單的AARCH64-Linux內核。
  5. 使用qemu-system-aarch64運行內核和ramdisk。

(所有二進制文件包括ramdisk中的busybox都是靜態編譯的。)

結果:

  1. “你好,世界!” AARCH64中的程序已成功執行。
  2. “你好,世界!” ARM32中的程序無法運行但顯示消息:

第1行:語法錯誤:意外的單詞(期待“)”)

是否有解決上述問題的建議或專業知識?

謝謝moonbutt74。 您為我尋找解決該問題的方法提供了有用的線索。

要在AARCH64內核上啟用運行ARM32-Linux程序的支持,應選擇內核中的選項:

  1. 運行make menuconfig ARCH = arm64
  2. 轉到該選項並選擇它:

用戶空間二進制格式--->內核支持32位EL0

  1. 通過運行make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-重新編譯內核make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

  2. 使用ramdisk和qemu-system-aarch64運行重新編譯的內核。

  3. “你好,世界!” (ARM32和AARCH64)中的程序可以成功執行!!

“make menuconfig ARCH = arm64”的屏幕截圖

暫無
暫無

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

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