pingap介绍

Pingap是类似于nginx的反向代理,基于pingora构建

交叉编译

要交叉编译到的平台架构为debian armv7l(armhf)
运行交叉编译的平台archlinux x64

1. 克隆源代码

1
git clone https://github.com/vicanso/pingap.git

2. 安装rust target

1
2
3
4
5
6
# 查看rusth支持的target
rustup target list
# 选择armv7-unknown-linux-gnueabihf
rustup target add armv7-unknown-linux-gnueabihf
# 查看是否安装成功,安装成功后对应架构会出现armv7-unknown-linux-gnueabihf (installed)
rustup target list

3. 安装c/c++交叉编译器gcc或zig (二选一)

如果rust项目中存在需要编译的c/c++依赖就要安装对应平台的编译器, 编译pingap需要安装

  • gcc 安装
    选择的gcc target为armv7l-linux-gnueabihf

    1
    2
    # 从archlinuxcn源安装
    sudo pacman -S armv7l-linux-gnueabihf-gcc
  • zig 安装
    使用cargo-zigbuild,免去查找下载c/c++交叉编译器的繁琐

    1
    2
    3
    sudo pacman -S zig cargo-zigbuild
    # cargo-zigbuild可以在cargo中安装
    # cargo install cargo-zigbuild

4. 编译rust项目

使用gcc
  • 直接在项目中运行
    1
    cargo build --release --target=armv7-unknown-linux-gnueabihf --config target.armv7-unknown-linux-gnueabihf.linker=\"armv7l-linux-gnueabihf-gcc\"`
  • 或设置项目配置文件
    在项目根目录的.cargo/config.toml添加
    1
    2
    [target.armv7-unknown-linux-gnueabihf]
    linker = "armv7l-linux-gnueabihf-gcc"
    然后运行 cargo build --release --target=armv7-unknown-linux-gnueabihf

    标题中的为rust target, linker 中为c/c++ 的target

使用zig

直接在项目中运行 cargo zigbuild --target armv7-unknown-linux-gnueabihf