在 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上的安装流程操作 失败的原因。
以上 共勉。