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

以上 共勉。

相关推荐
Web3探索者3 小时前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo5 小时前
Linux系统中网线与USB网络共享冲突
linux
Sokach10151 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao2 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3103 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
元Y亨H4 天前
MacBook Air 开发神器:IDEA 与 PyCharm 极简安装及环境配置
macos
A小辣椒5 天前
TShark:Wireshark CLI 功能
linux
yuanyxh5 天前
macOS 应用 - 纯对话生成
前端·macos·ai编程
A小辣椒5 天前
TShark:基础知识
linux