文章

rust交叉编译mipsel的openssl库

  编辑于:2024-10-15
文章目录

编译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/

发表回复