交叉编译 OpenSSL

概述


OpenSSL 是一个健壮的、商业级的、功能齐全的开源工具包,用于传输层安全协议(TLS, Transport Layer Security),以前称为安全套接字层(SSL, Secure Sockets Layer)协议。协议实现基于一个完整的通用加密库,该库也可以独立使用。

OpenSSL 是 Eric A. Young 和 Tim J. Hudson 由 SSLeay 库开发演变而来的。

OpenSSL 项目官方网址:https://www.openssl.org

OpenSSL toolkit 包含:

  • libssl 所有 TLS 协议的实现 (TLSv1.3)
  • libcrypto 一个全强度通用加密库。它构成 TLS 实现的基础,但也可以独立使用。
  • openssl OpenSSL 命令行工具,一把瑞士军刀,用于加解密任务,测试与分析。

openssl framework

下载


量产使用

可以从 https://www.openssl.org/source 下载官方发行版本的源码压缩包。

最新的稳定版本是支持到 2026 年 9 月 7 日的 3.0 系列,这也是一个长期支持(LTS, Long Term Support)版本。先前的 LTS 版本(1.1.1系列)也可用,并支持到 2023 年 9 月 11 日。所有旧版本(包括1.1.0、1.0.2、1.0.0 和 0.9.8)现在都不受支持,不应使用。OpenSSL 官方鼓励这些旧版本的用户尽快升级到 3.0。

扩展阅读:OpenSSL 3.0 正式发布

download
也可以直接使用 wget 命令下载:

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1f.tar.gz

开发及测试使用

这里面的“开发及测试”主要是指针对 OpenSSL 项目本身而言。虽然理论上也可以使用源码压缩包进行测试和开发,但拥有一个包含整个项目历史的 git 仓库的本地副本,可以让您更深入地了解代码库。

编译

当下载了源码包,解压缩之后,务必先阅读一下 INSTALL 文件,里面有关于交叉编译的关键信息点。

  • 解压缩源码包

    tar -xvf openssl-1.1.1f.tar.gz
    
  • 确保交叉编译器已经配置在 $PATH 环境变量中,在该示例中 aarch64-linux-gcc 编译器位于 /opt/toolchains/.../bin 目录下:

    export PATH=$PATH:/opt/toolchains/aarch64--glibc--stable-2020.08-1/bin
    
  • 交叉编译指令

    ./config no-asm --prefix=/usr --cross-compile-prefix=aarch64-linux-
    
    • no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程
    • --prefix: 指定生成的头文件及库的路径,不修改此项则默认为 /usr/local 目录
    • --cross-compile-prefix: 指定交叉编译工具链命令的前缀,很可能必须以破折号结尾,例如 aarch64-linux- 将 GNU 编译器作为 aarch64-linux-gcc 调用,等等。
  • 修改 Makefile 文件,将 -m64 移除,否则会出现编译报错:

    aarch64-linux-gcc.br_real: error: unrecognized command line option '-m64'
    
  • 移除后保存 Makefile,就可以继续执行编译了:

    make
    make DESTDIR=/tmp/sysroot install
    

最后,在该示例中 openssl 生成在 /tmp/sysroot 目录下。关于 DESTDIR 的详细信息可参考官方说明或「交叉编译 libcap」中的示例。

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景


▽ \bigtriangledown 交叉编译 CURL

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要交叉编译 OpenSSL,您需要确保已经设置好适当的交叉编译工具链。以下是一些基本步骤: 1. 下载 OpenSSL 源代码:访问 OpenSSL 官方网站(https://www.openssl.org/source/)下载所需版本的源代码。 2. 解压源代码:将下载的源代码文件解压到您选择的目录中。 3. 设置环境变量:打开终端并设置适当的环境变量,以指向交叉编译工具链。例如,如果您使用的是 ARM 架构的交叉编译工具链,可以设置以下环境变量: ``` export CROSS_COMPILE=arm-linux- export CC=${CROSS_COMPILE}gcc export AR=${CROSS_COMPILE}ar export RANLIB=${CROSS_COMPILE}ranlib ``` 这些变量将根据您的工具链而有所不同,需要根据实际情况进行调整。 4. 配置 OpenSSL:进入 OpenSSL 源代码目录并运行以下命令来配置交叉编译选项: ``` ./Configure <target> --prefix=<install_path> --cross-compile-prefix=<cross_compile_prefix> ``` `<target>` 是要交叉编译的目标平台,例如 `linux-armv4` 或 `linux-x86_64`,`<install_path>` 是要安装编译结果的路径,`<cross_compile_prefix>` 是交叉编译工具链的前缀。 5. 编译和安装:运行以下命令来进行编译和安装: ``` make make install ``` 这将编译 OpenSSL 并将结果安装到指定的路径中。 这是一个基本的交叉编译 OpenSSL 的步骤概述。实际操作中可能会有更多的细节和特定的配置需要根据您的工具链和目标平台进行调整。确保参考 OpenSSL 的文档和交叉编译工具链的文档来获取更详细的指导。希望对您有所帮助!如果您有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值