You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交叉编译树莓派程序时无法链接libcurl与libcrypto库求助

解决交叉编译树莓派程序时找不到libcurl和libcrypto的问题

这问题我碰到过好多次了——交叉编译最容易踩的就是架构不匹配的坑!先给你点破核心问题:你指定的-L/usr/lib/x86_64-linux-gnu完全没用,甚至帮倒忙!因为你用的arm-linux-gnueabihf-g++是给ARM架构(树莓派用的就是ARM)编译程序的工具链,而/usr/lib/x86_64-linux-gnu里的库都是给x86_64架构(你的PC)用的,两者指令集不兼容,工具链根本不会认这些x86库,自然报找不到。

正确的解决步骤

  • 第一步:安装ARM架构的依赖库
    你需要安装针对arm-linux-gnueabihf的开发包,也就是树莓派能用的ARM版本libcurl和OpenSSL(包含libcrypto、libssl):

    sudo apt-get install libcurl4-gnutls-dev:arm-linux-gnueabihf libssl-dev:arm-linux-gnueabihf
    

    这里的:arm-linux-gnueabihf后缀是告诉APT要下载ARM架构的包,而不是你PC用的x86版本。

  • 第二步:重新编译
    安装完成后,直接用你原来的编译命令就行,不用加额外的-L参数——交叉编译工具链会自动去/usr/arm-linux-gnueabihf/lib等ARM库的默认路径搜索,另外注意:.h头文件不需要写到编译命令里,编译器会自动通过#include找到它们,加进去反而多余。最终命令改成:

    arm-linux-gnueabihf-g++ *.cpp b64.c -o file -lcurl -lcrypto -lpthread -lssl
    

关于libssl的疑问

libssl和libcrypto都是OpenSSL库的一部分:libcrypto负责加密算法实现,libssl负责SSL/TLS协议相关的功能。安装libssl-dev:arm-linux-gnueabihf时会自动附带libcrypto的开发文件,所以安装上面的包后,-lcrypto和-lssl的依赖都能解决。

如果还是报错?

可以先检查ARM库是否真的安装成功:

find /usr/arm-linux-gnueabihf -name "libcurl.so"
find /usr/arm-linux-gnueabihf -name "libcrypto.so"

如果能找到对应的文件,说明安装没问题,再检查编译命令有没有拼写错误就行。

内容的提问来源于stack exchange,提问作者justsomeoneelse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:06:48