依赖库
ssh由openssh交叉编译
openssh依赖zlib和openssl两个库
分别提供压缩和加密的功能
需要先交叉编译这两个库
网上提到的很多编译方法似乎都不适用aarch64,这里重新总结一下
openssl
编译
可以从官方的github下载比较新的release版本
https://github.com/openssl/openssl/releases
下载tar.gz压缩包
<配置自己工具链的环境变量>
<保证aarch64-linux-gnu- tab键能自动补全就可以,不需要CROSS_COMPILE CC CXX等环境变量>
tar -xzf openssl-OpenSSL_1_1_1a.tar.gz
cd openssl-OpenSSL_1_1_1a/
./Configure linux-aarch64 --cross-compile-prefix=aarch64-linux-gnu- --prefix=/home/wjk/install/openssl shared
make
make install
这里比较容易出问题的是./Configure,四下寻找才找到正确的配置方法
- linux-aarch64是指定平台,
- –cross-compile-prefix是工具链前缀
- –prefix是执行make install的安装路径
- shared是指定要生成共享库
执行make install后会将生成的文件复制到选定路径,主要包括
- bin里面是几个工具
- include里面是头文件,我们在PC上交叉编译时将需要指定这个头文件搜索路径
- lib里面是静态库和共享库
- share和ssl里面不知道是什么,似乎是文档
部署
sudo cp -a 可以保留动态库的软连接
将lib里面的共享库需要复制到机器里面,并且添加共享库的搜索路径
我的机器是放到了/usr/openssl/lib里面
在/etc/profile添加这个库的搜索路径
export SSL_LDPATH=/usr/openssl/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SSL_LDPATH
openssl测试
可以写简单的代码测试ssl是否可以正确工作
ssltest.cpp
#include <stdio.h>
#include <string.h>
#