如何在X86设备编译ARM架构的openssl和openssh
参考:
https://blog.csdn.net/qq_28117531/article/details/117512559
https://blog.csdn.net/m0_49857167/article/details/128381931
1.交叉编译zlib
zlib-1.2.13.tar.gz https://www.zlib.net/
此处操作步骤有问题,不做说明
环境是没有gcc的Ubuntu的18.04的虚拟机,作者直接 cp aarch64-linux-gnu-gcc-6.2.1 gcc
tar xvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
make -p /usr/local/zlib
./configure --prefix=/usr/local/zlib/
make && make install -j8
2.交叉编译openssl
(1)下载源码包
openssl: openssl-1.1.1u.tar.gz https://www.openssl.org/source/
(2)上传至虚拟机,并进行解压,随后进入目录
tar xvf openssl-1.1.1u.tar.gz
cd openssl-1.1.1u
(3)创建编译输出结果的目录
mkdir -p /usr/local/openssl
(4)执行配置文件,命令如下:
./config no-asm shared no-async --prefix=/usr/local/openssl --cross-comple-prefix=aarch64-linux-gnu-
参数说明:
no-asm:在交叉编译过程中,不使用汇编代码代码加速编译过程,原因是他的汇编代码是对arm格式不支持的
share:生成动态连接库
no-async:交叉编译工具链没有提供GNC C的ucontext库
--prefix=:安装路径,编译完成install后,将有bin,lib,inlude等文件夹
-cross-compile-prefix=:交叉编译工具
修改Makefile文件
注释:
# CNF_CFLAGS=pthread -m64
# CNF_CXXFLAGS=-std=c++11 -pthread -m64
make && mak install -j8
3.交叉编译openssh
(1)下载源码包
openssh-9.2p1.tar.gz http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
(2)上传至虚拟机,并进行解压,随后进入目录
tar xvf openssh-9.2p1.tar.gz
cd openssh-9.2p1
(3)交叉编译
./configure --host=arm-linux-gnueabihf --with-lib --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --disable-etc-default-login CC=aarch64-linux-gnu-gcc-6.2.1 AR=aarch64-linux-gnu-gcc-ar
参数说明:
--host:表示主机架构,这里选择arm
--with-zlib:表示指定先前编译的zlib库的存放路径
--with-ssl-dir:表示上面交叉编译的openssl库的存放路径
CC:指定交叉编译器
AR:指定库管理器
make -j8
编译完成,当前路径下的ssh,即是需要的arm的ssh
网友评论