交叉编译工具链下载:
Cross-compilation toolchains for Linux - Home
下载架构mips32
和libc
为glibc
的稳定版交叉编译工具链在Ubuntu桌面下解压,文件夹名为mips32--glibc--stable-2020.08-1
,交叉编译工具链命名规则:
常见名字:
arm-none-linux-gnueabi-gcc
arm-cortex_a8-linux-gnueabi-gcc
mips-malta-linux-gnu-gcc
命名规则:
arch-core-kernel-system
arch: 用于哪个目标平台。
core: 使用的是哪个CPU Core,如Cortex A8,但是这一组命名好像比较灵活,在其它厂家提供的交叉编译链中,有以厂家名称命名的,也有以开发板命名的,或者直接是none或cross的。
kernel: 所运行的OS,见过的有Linux,uclinux,bare(无OS)。
system:交叉编译链所选择的库函数和目标映像的规范,如gnu,gnueabi 等。其中gnu等价于glibc+oabi;gnueabi等价于glibc+eabi。
References
先用echo $PATH
检查当前所有的命令路径,在我的环境下显示:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
各个命令文件夹以逗号分隔,因为我们的交叉编译工具文件夹的目录是:
/home/yym/桌面/mips32–glibc–stable-2020.08-1/bin
所以应该这样设置临时环境变量,命令为:
export PATH=/home/yym/桌面/mips32--glibc--stable-2020.08-1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
临时环境变量只在当前的shell或其子shell下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
openssl源码下载地址:
GitHub - openssl/openssl: TLS/SSL and crypto library
选择一个版本下载后,在Ubuntu里面解压,在目录下打开终端输入命令:
./Configure --cross-compile-prefix=mips-buildroot-linux-gnu- shared linux-mips32
参数解析:
-
--prefix=
指定编译后安装路径,就是执行make install
后的安装目录,如果只是想生成库文件,不需要安装,就不需要这个参数,如果需要编译后安装,则执行以下命令:./Configure --prefix=/home/yym/桌面/openssl --cross-compile-prefix=mips-buildroot-linux-gnu- no-asm shared linux-mips32
-
--cross-compile-prefix=
指定交叉编译工具链命令的前缀,以连接号结束 -
shared
作用是生成动态链接库 -
no-asm
表示不使用汇编代码,没有问题就不加,如果编译有问题再加:./Configure --cross-compile-prefix=mips-buildroot-linux-gnu- no-asm shared linux-mips32
-
--openssldir=
指定openssl
配置文件的安装目录,如果不指定,默认安装到--prefix
指定目录下的ssl
目录
然后使用make
命令编译,如果需要安装则运行make install
。
编译完成后发现,编译好的动态链接库libcrypto.so.1.1
、libssl.so.1.1
和软链接libcrypto.so
、libssl.so
。
References
编译流程:
【经验分享】linux交叉编译 - openssl动态库-云社区-华为云
Toolchains Wiki:
交叉编译工具链下载:
GNU Toolchain | GNU Arm Embedded Toolchain Downloads - Arm Developer
交叉编译环境详解: