1
2
3
4
5
6
7
8
9
10
11
12
1.qemu
2.交叉编译环境(GUN)
apt seach "gcc-"| grep "arm"
apt seach "libc6" | grep "arm"
3.musl-libc
apt install musl-tools
4.架构
arm,aarch64(arm64)
mips,mips64,mipsel,mips64el
powerpc,powerpc64,powerpc64le
5.seccomp--沙箱的工具
apt install libseccomp-dev libseccomp2 seccomp
  • 交叉编译:嵌入式开发 | 什么是交叉编译(CROSS_COMPILE) - 知乎 (zhihu.com)

  • 四月份写的博客,当时知识储备比较低,就用qemu用户模式运行个riscv架构的程序都还去搞个交叉编译环境,然后重新编译已经编译好的二进制文件(太呆了)

  • 时隔半年,再来搭建一下异架构的环境,重新写一下博客

  • 先安装个qemu,具体安装过程放另一个虚拟化的博客上了,这里我这里我楼安装了一个qemu的功能

1
sudo apt install qemu-user-static binfmt-support

MIPS交叉编译环境

前置安装

  • 安装mips的依赖库,用于gcc编译器进行交叉汇编使用

  • 不过这里我先创建一个文件夹,用来专门管理异架构程序和交叉编译工具的

1
2
3
mkdir all_arch
cd all_arch
mkdir mips
  • 然后安装依赖库
    • gcc-mips-linux-gnu是mips交叉编译器
    • gcc-mipsel-linux-gnu MIPS 小端架构的交叉编译器,专门用于生成适用于小端 MIPS 系统的二进制文件
    • gcc-mips64-linux-gnuabi64用于 MIPS 64 位架构的交叉编译器,允许你在其他架构上编译运行于 MIPS 64 位系统的程序
    • gcc-mips64el-linux-gnuabi64 用于编译 MIPS 64 位架构大端序的gcc编译器
1
2
3
4
sudo apt-get install gcc-mips-linux-gnu
sudo apt-get install gcc-mipsel-linux-gnu
sudo apt-get install gcc-mips64-linux-gnuabi64
sudo apt-get install gcc-mips64el-linux-gnuabi64

测试

  • 先来测试一下是不是完成了编译的环境,这里需要介绍几个关于qemu和gcc的命令
  • 关于gcc
1
2
mips64el-linux-gnuabi64-gcc -o hello_mips hello.c # 编译mips64位程序(大)
mipsel-linux-gnu-gcc -o hello_mips hello.c # 编译mips32位程序(小)
  • 关于qemu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
```



### mips64(小)

+ 示例程序如下

```c
#include<stdio.h>
int main()
{
printf("hello world!");
return 0;
}
// mips64el-linux-gnuabi64-gcc -o test1 test1.c
  • 然后使用readelf命令查看文件头,确定ELF文件的运行位数,大小端序,架构

image-20240924212844367