mirror of
https://github.com/springzfx/cgproxy.git
synced 2026-01-07 13:07:56 +08:00
83 lines
1.7 KiB
Markdown
83 lines
1.7 KiB
Markdown
## Cross Compile
|
|
|
|
```bash
|
|
docker pull debian:buster
|
|
|
|
# in container
|
|
dpkg --add-architecture arm64
|
|
apt update
|
|
apt install gcc-8-aarch64-linux-gnu # cross compile toolchain
|
|
apt install libelf-dev:arm64 # target depency library
|
|
...
|
|
```
|
|
|
|
## Emulation
|
|
|
|
### Register qemu-user-static
|
|
|
|
- before register binfmt
|
|
|
|
```bash
|
|
docker run --rm -t arm64/ubuntu uname -m
|
|
```
|
|
|
|
- register binfmt
|
|
|
|
```bash
|
|
# through docker
|
|
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
# or through systemd
|
|
pacman -S qemu-user-static binfmt-qemu-static
|
|
systemctl restart systemd-binfmt.service
|
|
# test
|
|
cat /proc/sys/fs/binfmt_misc/qemu-aarch64
|
|
```
|
|
|
|
- after register binfmt
|
|
|
|
```bash
|
|
docker run --rm -t arm64/ubuntu uname -m
|
|
```
|
|
|
|
### M1: Docker
|
|
|
|
```bash
|
|
# start container background
|
|
docker run -dit --name arm64 -v /home/fancy/workspace-xps:/data arm64v8/ubuntu
|
|
|
|
# enter container
|
|
docker exec -it arm64 bash
|
|
```
|
|
|
|
### M2: Chroot
|
|
|
|
download image [ubuntu-base-20.04-base-arm64.tar.gz](http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-arm64.tar.gz), extract and chroot to it.
|
|
|
|
```bash
|
|
sudo arch-chroot ubuntu-base-20.04-base-arm64
|
|
```
|
|
|
|
### Refer
|
|
|
|
- https://www.stereolabs.com/docs/docker/building-arm-container-on-x86/
|
|
|
|
- https://github.com/junaruga/fedora-workshop-multiarch/blob/master/slides/Lets-add-Fedora-multiarch-to-CI.pdf
|
|
|
|
- https://wiki.debian.org/QemuUserEmulation
|
|
|
|
### Compile
|
|
|
|
ready some depencies.
|
|
|
|
```bash
|
|
# maybe repository: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
|
|
# install in container for kernel bpf build
|
|
apt install dialog apt-utils
|
|
apt install build-essential gcc clang llvm
|
|
apt install bison flex bc rsync libssl-dev binutils-dev libreadline-dev libelf-dev
|
|
apt install make cmake
|
|
# for cgproxy
|
|
apt install nlohmann-json3-dev rpm
|
|
```
|
|
|