龙芯交叉编译openssl
神州龙芯专用交叉编译器
https://download.csdn.net/download/qq_30753921/89695969
openssl源码加速下载
https://download.csdn.net/download/qq_30753921/89964046
神州龙芯的编译器需要依赖Ubuntu20.04的操作系统,操作系统可以在华为云的镜像中下载
https://mirrors.huaweicloud.com/ubuntu-releases/20.04/
用于开发的话,适合下载桌面版,平时为了降低资源占用可以改成纯命令行模式,但是有的时候用桌面会很方便
https://mirrors.huaweicloud.com/ubuntu-releases/20.04/ubuntu-20.04.6-desktop-amd64.iso
将源码文件夹和交叉编译器上传到虚拟机上,解压之后,进入到源码目录
./Configure linux-armv4 no-asm shared --prefix=/home/iap/ws/ssh_cc/export --cross-compile-prefix=/home/iap/ws/ssh_cc/mipsel-loongson-linux-gnu/bin/mipsel-loongson-linux-gnu-
使用上方的命令配置生成特定的makefile文件,注意需要加上 linux-armv4标记,否则后续编译的时候会报和下方类似的错误
crypto/bn/bn_dh.c:998:5: error: initializer element is not constant
crypto/bn/bn_dh.c:998:5: error: (near initialization for 'ffdhe8192_q[120]')
--prefix之后跟的是最终编译完成后的库,通过make install命令之后静态,动态库还有头文件的存放路径,--cross-compile-prefix之后跟的是交叉编译工具链的前缀,如下图所示
在运行configure命令之后,源码会生成一份Makefile文件,通过文本编辑器删除编译记号像-m64这样的,可以通过查找功能找到位置,一般在3657和3658行这样子
之后使用make -j8命令进行编译,后面的-j8可以通过nproc命令查看系统支持使用的线程数,这里使用的线程越多,编译的速度越快,8线程的话,编译动作也需要1分钟以上,单线程需要等的更久
之后使用make install命令,等待近1分钟,就能收到编译产物
no-asm shared 在configure命令里面还需要注意这两个选项,no-asm是禁用汇编优化,shared的意思是生成静态库的时候也生成动态库