交叉编译aarch64架构支持openssl的curl、libcurl

本文档旨在指导读者在x86_64平台上交叉编译curl和openssl库以支持aarch64架构。在开始之前,请确保您的系统环境已正确配置。

1. 系统环境准备


系统是基于Ubuntu 20.04 LTS,高版本可能会有问题。首页,安装必要的开发工具和库文件。打开终端并执行以下命令:

sudo apt-get update
sudo apt-get install build-essential cmake gcc-aarch64-linux-gnu g++-aarch64-linux-gnu autoconf automake libtool

这些软件包将为您提供编译过程中所需的基本工具链。

2. OpenSSL交叉编译


2.1 支持的CPU架构

在开始交叉编译之前,请注意OpenSSL 1.1.1w支持广泛的CPU架构,包括aarch64。确保您的目标平台与此版本兼容。目录支持架构如下:

BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8 BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-i386 Cygwin-i486 Cygwin-i586 Cygwin-i686 Cygwin-x86 Cygwin-x86_64 DJGPP MPE/iX-gcc OS390-Unix QNX6 QNX6-i386 UEFI UWIN VC-CE VC-WIN32 VC-WIN64A VC-WIN64A-masm VC-WIN64I aix-cc aix-gcc aix64-cc aix64-gcc android android-armeabi android-mips android-x86 android64 android64-aarch64 bsdi-elf-gcc cc darwin-i386-cc darwin-ppc-cc darwin64-debug-test-64-clang darwin64-ppc-cc darwin64-x86_64-cc dist gcc haiku-x86 haiku-x86_64 hpux-ia64-cc hpux-ia64-gcc hpux-parisc-cc hpux-parisc-gcc hpux-parisc1_1-cc hpux-parisc1_1-gcc hpux64-ia64-cc hpux64-ia64-gcc hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86 ios-cross ios64-cross iphoneos-cross irix-mips3-cc irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-aarch64 linux-alpha-gcc linux-aout linux-arm64ilp32 linux-armv4 linux-c64xplus linux-elf linux-generic32 linux-generic64 linux-ia64 linux-mips32 linux-mips64 linux-ppc linux-ppc64 linux-ppc64le linux-sparcv8 linux-sparcv9 linux-x32 linux-x86 linux-x86-clang linux-x86_64 linux-x86_64-clang linux32-s390x linux64-mips64 linux64-s390x linux64-sparcv9 mingw mingw64 nextstep nextstep3.3 purify qnx4 sco5-cc sco5-gcc solaris-sparcv7-cc solaris-sparcv7-gcc solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc solaris-sparcv9-gcc solaris-x86-gcc solaris64-sparcv9-cc solaris64-sparcv9-gcc solaris64-x86_64-cc solaris64-x86_64-gcc tru64-alpha-cc tru64-alpha-gcc uClinux-dist uClinux-dist64 unixware-2.0 unixware-2.1 unixware-7 unixware-7-gcc vms-alpha vms-alpha-p32 vms-alpha-p64 vms-ia64 vms-ia64-p32 vms-ia64-p64 vos-gcc vxworks-mips vxworks-ppc405 vxworks-ppc60x vxworks-ppc750 vxworks-ppc750-debug vxworks-ppc860 vxworks-ppcgen vxworks-simlinux debug debug-erbridge debug-linux-ia32-aes debug-linux-pentium debug-linux-ppro debug-test-64-clang

2.2 编译步骤

  1. 下载并解压OpenSSL源代码
    到https://www.openssl.org/source/ 下载openss源码包,当前使用的源码包是:
    https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    运行以下命令:
cd /home/user/soft/
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
  1. 解压源码包
tar xvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
  1. 执行以下命令配置编译选项
./Configure -fPIC no-asm -static no-async linux-aarch64 --prefix=/path/to/openssl/output

确保将/path/to/openssl/output替换为您希望安装OpenSSL的目录路径。

  1. 接下来,执行以下命令以开始编译过程
make CC="aarch64-linux-gnu-gcc" AR="aarch64-linux-gnu-ar" RANLIB="aarch64-linux-gnu-ranlib" AS="aarch64-linux-gnu-as" LD="aarch64-linux-gnu-ld" NM="aarch64-linux-gnu-nm"
  1. 编译完成后,执行以下命令安装OpenSSL
make install

便在/path/to/openssl/output目录下生成如下目录结构:
在这里插入图片描述

3. CURL交叉编译


3.1 交叉编译步骤

  1. 下载并解压CURL源代码
    到 https://github.com/curl/curl/releases 下载curl源码,当前版本为8.5.0:
    在这里插入图片描述
cd /home/user/soft/
#可能需要架梯子
wget https://github.com/curl/curl/releases/download/curl-8_5_0/curl-8.5.0.tar.gz
  1. 解压源代码
tar xvf curl-8.5.0.tar.gz
cd curl-8.5.0
  1. 执行以下命令配置编译选项
./configure --target=aarch64-linux-gnu --host=aarch64-linux-gnu --build=x86_64-linux-gnu --with-pic --enable-static --disable-ldap --disable-ldaps --without-libidn --with-openssl=/path/to/openssl/output LDFLAGS=-ldl --prefix=/path/to/curl/output

确保将/path/to/openssl/output替换为您之前安装OpenSSL的目录路径,并将/path/to/curl/output替换为您希望安装CURL的目录路径。

  1. 接下来,执行以下命令以开始编译过程
make CC="aarch64-linux-gnu-gcc" AR="aarch64-linux-gnu-ar" RANLIB="aarch64-linux-gnu-ranlib" AS="aarch64-linux-gnu-as" LD="aarch64-linux-gnu-ld" NM="aarch64-linux-gnu-nm"
  1. 编译完成后,执行以下命令安装CURL
make install

在/path/to/curl/output目录生成如下图目录结构
在这里插入图片描述
lib目录下就有libcurl库
在这里插入图片描述

至此,您已成功交叉编译了支持aarch64平台的curl和openssl库。现在可以将这些库部署到相应的目标设备上使用了。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmarterTech

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值