How to work with x86_64 binaries in the ARM64 Linux VM on top of M1 macOS Host
Let's take Qt online installer and Qt Creator as an example.
Requirements
At the time of this writing:
diff --git a/src/Makefile b/src/Makefile | |
index 182dd0c..ed34a08 100644 | |
--- a/src/Makefile | |
+++ b/src/Makefile | |
@@ -1,8 +1,8 @@ | |
-include Makefile.local | |
-CC_NATIVE ?= gcc | |
-CXX_NATIVE ?= g++ | |
-LD_NATIVE ?= g++ |
#include <stdio.h> | |
#include <unistd.h> | |
#include <time.h> | |
#include <wiringSerial.h> | |
#define UART_NODE "/dev/ttyS0" | |
enum KEY_TYPE { | |
SHORT_PRESS = 1, | |
MIDDLE_PRESS = 2, |
Download file from download.qt.io.
import QtQuick 2.0 | |
import QtQuick.Window 2.0 | |
import QtWebEngine 1.0 | |
import QtQuick.VirtualKeyboard 2.2 | |
import QtQuick.VirtualKeyboard.Settings 2.2 | |
Window { | |
width: Screen.width | |
height: Screen.height | |
visible: true |
(function () { | |
window.addEventListener("keypress", function (e) { | |
console.log('keypress:'+String.fromCharCode(e.keyCode)); | |
e.preventDefault(); | |
}, false); | |
})(); |
QString QQuickLoader::errorString() const | |
{ | |
Q_D(const QQuickLoader); | |
QString ret; | |
if(d->component->errors().isEmpty()) | |
return ret; | |
if (d->component && d->component->isError()) { | |
const QList<QQmlError> errorList = d->component->errors(); | |
for (const QQmlError &e : errorList) { |
penk@abulafia:~/armhf-rootfs$ du -h ./usr/lib/arm-linux-gnueabihf/libOxideQtCore.so.0
51M ./usr/lib/arm-linux-gnueabihf/libOxideQtCore.so.0
penk@abulafia:~/armhf-rootfs$ du -h ./usr/lib/arm-linux-gnueabihf/oxide-qt
420K ./usr/lib/arm-linux-gnueabihf/oxide-qt/chromium_l10n
23M ./usr/lib/arm-linux-gnueabihf/oxide-qt
commit 8f43fd71173f6da79b5029343e35285c8800a1de | |
Author: Penk Chen <penkia@gmail.com> | |
Date: Fri Dec 16 11:47:03 2016 +0000 | |
Add volatile-log boot param | |
diff --git a/init b/init | |
index 43f1571..bb7f995 100755 | |
--- a/init | |
+++ b/init |
snap_core=core_584.snap | |
snap_kernel=pi2-kernel_24.snap | |
snappy_usb_boot=run loadfiles; setenv mmcroot "/dev/sda2 ${snappy_cmdline} snap_core=${snap_core} snap_kernel=${snap_kernel}"; run mmcargs; bootz ${loadaddr} ${initrd_addr}:${initrd_size} 0x02000000 | |
loadinitrd=load usb ${mmcdev}:${mmcpart} ${initrd_addr} ${snap_kernel}/${initrd_file}; setenv initrd_size ${filesize} | |
loadkernel=load usb ${mmcdev}:${mmcpart} ${loadaddr} ${snap_kernel}/${kernel_file} | |
uenvcmd=echo USB-BOOT; run usb_boot; run snappy_usb_boot |