macOS 上搭建 RK3568 交叉编译环境

在 Apple(M 芯片) 的 macOS 上,使用 Lima 创建一个 ARM64 (aarch64) 架构的 Linux 虚拟机,并在其中安装 GCC 7 交叉编译器,以编译 RK3568 平台的程序。最终配置使得 aarch64-linux-gnu-gcc 命令指向 GCC 7.5 版本。

1. 安装 Homebrew

Homebrew 是 macOS 的包管理器,用于安装后续所需的软件。

打开终端,执行以下命令安装 Homebrew(如果尚未安装):

c 复制代码
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后,根据终端提示将 Homebrew 添加到 PATH(通常会自动提示,也可手动执行以下命令):

c 复制代码
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

验证安装:

c 复制代码
brew --version

2. 安装 Lima

Lima 可以让你在 macOS 上轻松启动 Linux 虚拟机,创建的虚拟机是 aarch64架构不是 windows 虚拟机中的x86_64j架构

c 复制代码
brew install lima

安装完成后,验证:

c 复制代码
limactl --version

3. 创建并配置 Lima 实例

创建一个 aarch64 架构的 Ubuntu 22.04 虚拟机,并设置共享文件夹,使 macOS 的代码目录可以直接在虚拟机中访问。

3.1 通过模版创建

Lima 内置了多个常用 Linux 发行版的模板,执行以下命令查看:

c 复制代码
limactl template list

输出类似:

c 复制代码
aliyun-ubuntu
docker
experimental/9p-sshfs
k3s
ubuntu-20.04
ubuntu-22.04
...

其中 ubuntu-22.04 就是我们将要使用的模板。

查看模版所在路径。

3.2 启动 Lima 实例

创建名为ubuntu的lima,/opt/homebrew/opt/lima/share/lima/templates/ubuntu-22.04.yaml是ubuntu-22.04在我计算机中的路径。

c 复制代码
limactl start --name=ubuntu  /opt/homebrew/opt/lima/share/lima/templates/ubuntu-22.04.yaml

首次启动会下载镜像并创建虚拟机,请耐心等待。

3.3 进入虚拟机

c 复制代码
limactl shell ubuntu

此时命令行提示符应变为 lima-ubuntu 开头,表示已进入虚拟机。

4. 在虚拟机中安装 GCC 交叉编译器

由于 Ubuntu 22.04 官方源不提供 GCC 7 的交叉编译器包,我们需要临时添加 Ubuntu 20.04 (Focal) 的源来安装。安装完成后建议禁用该源,避免系统升级时引发冲突。

4.1 添加 Ubuntu 20.04 源并安装

在虚拟机内执行以下命令:

c 复制代码
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main universe" | sudo tee /etc/apt/sources.list.d/focal.list

更新软件包

c 复制代码
sudo apt update

安装交叉编译器

c 复制代码
sudo apt install gcc-aarch64-linux-gnu

上述命令安装的基本是当前系统支持的最新版本的编译器,比如22.04 安装的是11.x版本,该版本编译我的代码会出现大量错误或者警告,我需要安装7.5版本的编译链。

c 复制代码
sudo apt install -y gcc-7 g++-7

安装之后查看版本 确认是否安装成功

c 复制代码
aarch64-linux-gnu-gcc-7 --version

4.3 创建符号链接(使命令名无版本号)

许多 Makefile 默认使用 aarch64-linux-gnu-gcc,此时通过该命令查询或者编译,系统会报错,提示找不到该编译链,这是因为编译链的名称是aarch64-linux-gnu-gcc-7. 因此创建符号链接将其指向 GCC 7 版本:

c 复制代码
sudo ln -s /usr/bin/aarch64-linux-gnu-gcc-7 /usr/bin/aarch64-linux-gnu-gcc
sudo ln -s /usr/bin/aarch64-linux-gnu-g++-7 /usr/bin/aarch64-linux-gnu-g++

验证链接:

c 复制代码
aarch64-linux-gnu-gcc --version

至此 编译环境搭建完毕。

注:MAC M系列芯片 笔记本本身就是arm64架构,因此不支持x86架构的linux或者编译链。这是与windows本上安装linux或者wsl 的差异,即 不需要找专门的x86_64转amd64的编译链。直接安装gcc和g++即可。这也是我转用mac时转不过弯,一直按照windows上的安装流程操作 失败的原因。

以上 共勉。

相关推荐
火星数据-Tina1 小时前
巨省Token:OpenClaw安装部署并接入数眼智能特价模型全流程(包含Windows和Mac)
windows·macos
芒果披萨2 小时前
Linux文件类基础命令行1
linux·运维·服务器
学嵌入式的小杨同学2 小时前
STM32 进阶封神之路(八):外部中断 EXTI 实战 —— 按键检测从轮询到中断(库函数 + 寄存器双版本)
linux·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
杨云龙UP3 小时前
ODA服务器RAC节点2/u01分区在线扩容操作记录及后续处理流程(Linux LVM + ext4 文件系统在线扩容操作手册)_20260307
linux·运维·服务器·数据库·ubuntu·centos
jyfool10 小时前
Ubuntu 远程桌面配置踩坑实录:从 TightVNC 到 x11vnc 的折腾之旅
linux·运维·ubuntu
安当加密11 小时前
基于 RADIUS 的 Linux 服务器双因子认证:从 FreeRADIUS 到轻量级 ASP 方案的演进
linux·运维·服务器
66清小风11 小时前
服务器安装操作系统报X or window manager startup failed, falling back to mode
linux·kylin
double2li12 小时前
linux/unix 段错误捕获【续】
linux·运维·服务器·网络·unix
allway212 小时前
Linux / Unix last Command Examples
linux·运维·unix