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

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706

运行配置脚本
利用 Configure 脚本配置 OpenSSL,指定目标平台和安装路径:
curl downloads  各个版本
Old 1.1.1 Releases | OpenSSL Library   各个版本

从 OpenSSL 官网下载源码包
  1. tar -xzf openssl-1.1.1b.tar.gz
  2. cd openssl-1.1.1b/
复制代码
运行配置脚本
利用 Configure 脚本配置 OpenSSL,指定目标平台和安装路径: 
  1. ./Configure linux-armv4 --prefix=/home/lxh/arm-libs/install --cross-compile-prefix=arm-linux-gnueabihf-
复制代码




    • linux-armv4:指定目标平台为 ARM。
    • --prefix:指定安装路径(更换为你的目标路径)。
    • --cross-compile-prefix:指定交织编译工具链前缀。

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

    • 修改 CFLAGS 和 LDFLAGS 以优化编译选项。
    • 确保 -march=armv7-a 或 -mcpu=cortex-a9 等选项恰当你的目标硬件。
    • 编译 OpenSSL
    • 编译源码
      运行以下命令开始编译:
      1. make -j$(nproc)
      复制代码

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

    • 检查编译效果
      编译完成后,检查天生的库文件和可实行文件:

      1. file apps/openssl
      复制代码
      输出应显示为 ARM 架构的可实行文件。

将编译好的 OpenSSL 安装到指定路径:
  1. make install
复制代码
下载并解压 curl 源码

  1. tar -xvjf curl-7.64.1.tar.bz2
  2. cd curl-7.64.1
复制代码
利用 configure 脚本配置编译选项,指定交织编译工具链和目标平台
  1. ./configure --host=arm-linux-gnueabihf --prefix=/home/lxh/arm-libs/install \
  2.             --with-ssl=/home/lxh/arm-libs/install \
  3.             --disable-ldap \
  4.             --disable-ldaps \
  5.             --without-libpsl \
  6.             --without-libidn2 \
  7.             --without-zstd \
  8.             --without-brotli \
  9.             --without-libpsl \
  10.             CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
复制代码


  • --host=arm-linux-gnueabihf:指定目标平台为 ARM。
  • --prefix=/home/lxh/arm-libs/install:指定安装目次。
  • --with-ssl 和 --with-zlib:启用 SSL 和 zlib 支持。
  • CC 和 CXX:指定交织编译器
编译和安装

  1. make -j$(nproc)
  2. make install
复制代码
在 ARM 装备上运行 curl,验证是否正常工作。

testcurl.c
  1. #include <curl/curl.h>
  2. int main(void)
  3. {
  4.     CURL *curl;
  5.     CURLcode res;
  6.     curl_global_init(CURL_GLOBAL_DEFAULT);
  7.     curl = curl_easy_init();
  8.     if (curl)
  9.     {
  10.         curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com");
  11.         res = curl_easy_perform(curl);
  12.         if (res != CURLE_OK)
  13.             fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
  14.         curl_easy_cleanup(curl);
  15.     }
  16.     curl_global_cleanup();
  17.     return 0;
  18. }
复制代码

makefile

  1. # 交叉编译工具链
  2. CC = arm-linux-gnueabihf-gcc
  3. # curl 库的安装路径
  4. CURL_DIR = /home/lxh/arm-libs/install
  5. # 编译选项
  6. CFLAGS = -I$(CURL_DIR)/include
  7. LDFLAGS = -L$(CURL_DIR)/lib -lcurl -lssl -lcrypto
  8. # 目标可执行文件
  9. TARGET = curl_example
  10. # 源文件
  11. SRCS = testcurl.c
  12. # 默认目标
  13. all: $(TARGET)
  14. # 编译规则
  15. $(TARGET): $(SRCS)
  16.         $(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LDFLAGS)
  17. # 清理
  18. clean:
  19.         rm -f $(TARGET)
复制代码













免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表