将 curl 交叉编译到 OpenWrt 上

背景

实验室使用网络需使用个人账号密码在特定网页上进行验证,在 OpenWrt 上可以使用 curl 进行验证. 但使用 opkg install curl 安装的 curl 需要使用 64bit libc 的 API, 而目前使用的架构 (mt7621) 是 32 位的架构,因此需要使用交叉编译将 curl 编译到目标架构上.

Steps

  1. 下载交叉编译工具链
wget https://archive.openwrt.org/snapshots/trunk/ramips/mt7621/OpenWrt-Toolchain-ramips-mt7621_gcc-5.3.0_musl-1.1.16.Linux-x86_64.tar.bz2
tar -zxvf OpenWrt-Toolchain-ramips-mt7621_gcc-5.3.0_musl-1.1.16.Linux-x86_64.tar.bz2
  1. 设置环境变量:
export PATH=$HOME/tmp/openwrt-toolchain/toolchain-mipsel_1004kc+dsp_gcc-5.3.0_musl-1.1.16/bin:$PATH
export STAGING_DIR=$HOME/tmp/openwrt-toolchain
  1. 下载 curl 源码,编译:
wget https://curl.se/download/curl-7.85.0.tar.gz
tar -zxvf curl-7.85.0.tar.gz
cd curl-7.85.0
LDFLAGS="-static" ./configure --build=x86_64-unknown-linux-gnu -host=mipsel-openwrt-linux-musl --without-ssl --without-zlib --prefix=$PWD/install --disable-shared --enable-static
make && make install

curl 的可执行文件将会被放到 install/bin, 可通过 file 查看其格式,将其拷贝到路由器上执行即可.