Skip to content

M1_Mac安装arm_ubuntu并配置x64编译环境

下载ubuntu arm镜像

推荐到国内镜像站点进行下载,个人使用的是 清华大学镜像站 。在右侧有获取下载链接,点击后下滑找到 ubuntu,选择 arm 版本的 server 镜像下载即可。(也可以下载 desktop 的镜像,但是仅仅编译代码 server 版本的明显更加轻便,对于系统资源消耗较少)

下载完成正常使用 parallels 安装即可。

Tips

  • 安装的时间可以选择 minisized,占用空间比较小,后续需要什么软件再使用 apt 安装
  • 安装的时间可以选择 openssh-server 一起安装了,可以避免后期再使用 apt 进行安装

配置 parallels tools

先在右上角或者菜单栏 操作 里面点击 安装 parallels tools,然后到 ubuntu 系统命令行中执行以下命令:

shell
sudo mkdir /media/cdrom
sudo mount /dev/cdrom /media/cdrom
cd /media/cdrom
sudo ./install

然后根据提示完成安装之后重启ubuntu。

安装编译环境

先更新系统内软件包

shell
sudo apt update
sudo apt upgrade

安装编译环境

shell
sudo apt install gcc gdb make cmake -y

测试编译环境是否安装成功

shell
gcc -v

安装x64交叉编译环境

安装交叉编译环境的时间我先根据上一步输出的 gcc 版本使用 apt 进行搜索,结果没有搜到!然后就每次降低一个 gcc 大版本进行搜索,最终找到了 gcc-12 的 x64版本。

shell
~$ apt search gcc-14
Sorting... Done
Full Text Search... Done
~$ apt search gcc-13
Sorting... Done
Full Text Search... Done
~$ apt search gcc-12
Sorting... Done
Full Text Search... Done
gcc-12/jammy-updates,jammy-security,now 12.3.0-1ubuntu1~22.04 arm64 [installed,automatic]
  GNU C compiler

gcc-12-arm-linux-gnueabi/jammy-updates,jammy-security 12.3.0-1ubuntu1~22.04cross1 arm64
  GNU C compiler (cross compiler for armel architecture)

######  中间的可以忽略,直接找到我们需要的  ######

gcc-12-x86-64-linux-gnu/jammy-updates,jammy-security,now 12.3.0-1ubuntu1~22.04cross1 arm64 [installed]
  GNU C compiler (cross compiler for amd64 architecture)

gcc-12-x86-64-linux-gnu-base/jammy-updates,jammy-security,now 12.3.0-1ubuntu1~22.04cross1 arm64 [installed,automatic]
  GCC, the GNU Compiler Collection (base package)

######  看到我们需要的了,后面的也可以忽略了  ######

libx32gcc-12-dev-i386-cross/jammy-updates,jammy-security 12.3.0-1ubuntu1~22.04cross1 all
  GCC support library (x32 development files)

~$

搜索到了之后好办了,直接使用搜索到的名称进行安装,顺带安装一下依赖

shell
sudo apt install gcc-12-x86-64-linux-gnu lsb-core -y

配置交叉编译环境变量。将交叉编译工具链的路径添加到 PATH 环境变量中:

shell
export PATH=/usr/x86_64-linux-gnu/bin:$PATH

验证交叉编译工具是否安装成功:

shell
~$ x86_64-linux-gnu-gcc-12 --version
x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

~$

如果你需要一个完整的示例,可以创建一个简单的“Hello World”程序,并使用交叉编译工具链来编译它:

shell
x86_64-linux-gnu-gcc-12 -o hello hello.c

测试正常编译之后可以给这个命令重命名以下(主要是现在这命令也太长了!):

shell
vim ~/.bashrc

在末尾添加以下内容

shell
## quick command
alias gccx64="x86_64-linux-gnu-gcc-12"

测试是否可行

shell
gccx64 -o hello hello.c

可能遇到的问题

在 x64 ubuntu配置 arch64 的交叉编译环境之后出现了 as 的问题。如:

shell
as:未识别的选项 ‘--64’
# 或者如下英文提示
as: unrecognized option '--64'

此时,我们需要查看 as 的位置及环境变量

shell
whereis as  
as: /usr/bin/as /usr/aarch64-linux-gnu/bin/as /usr/share/man/man1/as.1.gz
which as
/usr/aarch64-linux-gnu/bin/as

可以看到此时 as 的位置使用的是 aarch64 里面的,所以只需要将其改变为系统gcc使用的as即可

在~/.bashrc中添加系统as环境位置,文件中最后一行添加如下:

shell
export PATH=/usr/bin:$PATH

添加完记得更新 source ~/.bashrc, 然后查看命令位置,发现as命令位置已经修改:

shell
which as
/usr/bin/as