news 2026/5/14 5:00:06

交叉编译curl(OpenSSL)移植ARM详细步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
交叉编译curl(OpenSSL)移植ARM详细步骤

运行配置脚本
使用Configure脚本配置 OpenSSL,指定目标平台和安装路径:

curl downloads 各个版本

Old 1.1.1 Releases | OpenSSL Library 各个版本

从 OpenSSL 官网下载源码包

tar -xzf openssl-1.1.1b.tar.gz cd openssl-1.1.1b/

运行配置脚本
使用Configure脚本配置 OpenSSL,指定目标平台和安装路径:

./Configure linux-armv4 --prefix=/home/lxh/arm-libs/install --cross-compile-prefix=arm-linux-gnueabihf-
./Configure linux-aarch64 \ --prefix=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ --cross-compile-prefix=aarch64-none-linux-gnu- \ shared
    • linux-armv4:指定目标平台为 ARM。

    • --prefix:指定安装路径(替换为你的目标路径)。

    • --cross-compile-prefix:指定交叉编译工具链前缀。

  1. 调整配置(可选)
    如果需要调整配置,可以编辑生成的Makefile,例如:

    • 修改CFLAGSLDFLAGS以优化编译选项。

    • 确保-march=armv7-a-mcpu=cortex-a9等选项适合你的目标硬件。

    • 编译 OpenSSL

    • 编译源码
      运行以下命令开始编译:

      make -j$(nproc)
      • -j$(nproc):使用多核并行编译以加快速度。

    • 检查编译结果
      编译完成后,检查生成的库文件和可执行文件:

      file apps/openssl

      输出应显示为 ARM 架构的可执行文件。

将编译好的 OpenSSL 安装到指定路径:

make install
# 1. 创建安装目录 mkdir -p /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install # 2. 查看目录权限 ls -ld /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install # 3. 配置 OpenSSL cd ~/Downloads/openssl-1.1.1b ./Configure linux-aarch64 \ --prefix=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ --cross-compile-prefix=aarch64-none-linux-gnu- \ shared # 4. 编译 make clean make -j$(nproc) # 5. 安装(会自动创建必要的子目录) make install # 6. 验证安装结果 ls -la /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install/ ls -la /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install/lib/ ls -la /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install/include/

下载并解压 curl 源码

tar -xvjf curl-7.64.1.tar.bz2 cd curl-7.64.1

使用configure脚本配置编译选项,指定交叉编译工具链和目标平台

./configure --host=arm-linux-gnueabihf --prefix=/home/lxh/arm-libs/install \ --with-ssl=/home/lxh/arm-libs/install \ --disable-ldap \ --disable-ldaps \ --without-libpsl \ --without-libidn2 \ --without-zstd \ --without-brotli \ --without-libpsl \ CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
  • ./configure --host=aarch64-none-linux-gnu \ --prefix=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ --with-ssl=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ CC=aarch64-none-linux-gnu-gcc \ CXX=aarch64-none-linux-gnu-g++
  • --host=arm-linux-gnueabihf:指定目标平台为 ARM。

  • --prefix=/home/lxh/arm-libs/install:指定安装目录。

  • --with-ssl--with-zlib:启用 SSL 和 zlib 支持。

  • CCCXX:指定交叉编译器

编译和安装

make -j$(nproc) make install

在 ARM 设备上运行curl,验证是否正常工作。

testcurl.c

#include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com"); res = curl_easy_perform(curl); if (res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }

makefile

# 交叉编译工具链 CC = arm-linux-gnueabihf-gcc # curl 库的安装路径 CURL_DIR = /home/lxh/arm-libs/install # 编译选项 CFLAGS = -I$(CURL_DIR)/include LDFLAGS = -L$(CURL_DIR)/lib -lcurl -lssl -lcrypto # 目标可执行文件 TARGET = curl_example # 源文件 SRCS = testcurl.c # 默认目标 all: $(TARGET) # 编译规则 $(TARGET): $(SRCS) $(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LDFLAGS) # 清理 clean: rm -f $(TARGET)

cd ~/Downloads/openssl-1.1.1b make clean make distclean ./Configure linux-aarch64 \ --prefix=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ --cross-compile-prefix=aarch64-none-linux-gnu- \ shared \ no-asm \ -fPIC make -j$(nproc) make install ls -la /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install/lib/libssl.so* cd ~/Downloads/curl-7.64.1 # 完全清理 make distclean # 静态编译配置 ./configure --host=aarch64-none-linux-gnu \ --prefix=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ --with-ssl=/home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install \ --disable-ldap \ --disable-ldaps \ --enable-static \ --disable-shared \ CC=aarch64-none-linux-gnu-gcc \ CXX=aarch64-none-linux-gnu-g++ make -j$(nproc) make install # 验证 file /home/lxh/Downloads/rk356x_linux_release_v1.3.1/arm-libs/install/bin/curl
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 4:57:04

【ZYNQ的Linux开发】网络socket编程

Linux的网络socket编程 &#xff08;1&#xff09;TCP客户端 ①代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #…

作者头像 李华
网站建设 2026/5/14 4:52:23

从DeepLabV3到V3+:那个被加上的Decoder,到底解决了语义分割的什么痛点?

DeepLabV3解码器设计&#xff1a;如何让语义分割重拾边界细节 当我们在Cityscapes数据集上对比DeepLabV3和V3的分割结果时&#xff0c;最明显的差异往往出现在自行车辐条、路灯杆和行人发丝这些细长物体上。传统编码器-解码器结构在追求感受野扩展的过程中&#xff0c;似乎总是…

作者头像 李华
网站建设 2026/5/14 4:52:21

终极TypeScript HTTP工具Zodios:10分钟快速上手指南

终极TypeScript HTTP工具Zodios&#xff1a;10分钟快速上手指南 【免费下载链接】zodios typescript http client and server with zod validation 项目地址: https://gitcode.com/gh_mirrors/zo/zodios Zodios是一个基于TypeScript的HTTP客户端和服务器工具&#xff0c…

作者头像 李华
网站建设 2026/5/14 4:51:06

基于钻石NV色心的量子磁传感器:原理、设计与工程实现

1. 项目概述&#xff1a;当钻石有了“瑕疵”&#xff0c;它就成了最灵敏的磁力“眼睛”在传感器领域&#xff0c;我们常常面临一个看似悖论的挑战&#xff1a;测量一个物理量&#xff0c;概念上清晰明了&#xff0c;但真要把它变成稳定、可靠、能读出具体数值的电路或系统&…

作者头像 李华
网站建设 2026/5/14 4:46:32

PixArt-Sigma实战案例:构建企业级AI图像生成平台的完整指南

PixArt-Sigma实战案例&#xff1a;构建企业级AI图像生成平台的完整指南 【免费下载链接】PixArt-sigma PixArt-Σ: Weak-to-Strong Training of Diffusion Transformer for 4K Text-to-Image Generation 项目地址: https://gitcode.com/gh_mirrors/pi/PixArt-sigma PixA…

作者头像 李华