编译openssl
下载所需的编译工具链,注意该工具链是社区制作,并未得到musl的官方认可
wget http://musl.cc/mipsel-linux-muslsf-cross.tgz tar xf mipsel-linux-muslsf-cross.tgz export PATH=$PATH:/path/to/mipsel-linux-muslsf-cross/bin
通过mipsel-linux-muslsf-gcc -v
验证安装是否成功,有回显则成功。
下载openssl
并编译
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz tar xf openssl-1.1.1w.tar.gz cd openssl-1.1.1w CC=mipsel-linux-muslsf-gcc ./Configure linux-mips32 -fPIE no-shared no-async --prefix=/usr/local/musl-mipsel-ssl make -j $(nproc) sudo make install_sw
交叉编译
rust中的mipsel在1.71以后的版本被移动到了tier3,仅提供有限的支持。
简单解决方案是回到1.71版本
rustup toolchain install 1.71 rustup target add mipsel-unknown-linux-gnu --toolchain 1.71
但是部分rust包规定了最低rust版本,如果使用了最低版本超过1.71的包,则无法成功编译,此时可以采用rust nightly
,使用以下命令切换
rustup default nightly rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
使用以下命令交叉编译
export OPENSSL_DIR=/usr/local/musl-mipsel-ssl cargo build --release -Z build-std --target mipsel-unknown-linux-musl --config target.mipsel-unknown-linux-musl.linker=\"mipsel-linux-muslsf-gcc\"
参考链接:https://harrychen.xyz/2023/09/03/cross-compile-rust-to-mipsel/