> 技术文档 > 立创·泰山派:Buildroot开启libcurl+OpenSSL教程_buildroot openssl

立创·泰山派:Buildroot开启libcurl+OpenSSL教程_buildroot openssl



泰山派Buildroot系统配置:启用libcurl与OpenSSL支持

【本文已在实际硬件验证,系统版本:Buildroot 2018.02,使用SDK为官方资料中获取】


一、配置背景与需求

  • 典型应用场景

    • 物联网设备HTTPS通信
    • OTA固件升级
    • 云平台API对接
  • 启用组件

    #mermaid-svg-AeBql4lrVtgCmdkt {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AeBql4lrVtgCmdkt .error-icon{fill:#552222;}#mermaid-svg-AeBql4lrVtgCmdkt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AeBql4lrVtgCmdkt .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-AeBql4lrVtgCmdkt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AeBql4lrVtgCmdkt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AeBql4lrVtgCmdkt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AeBql4lrVtgCmdkt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AeBql4lrVtgCmdkt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AeBql4lrVtgCmdkt .marker.cross{stroke:#333333;}#mermaid-svg-AeBql4lrVtgCmdkt svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AeBql4lrVtgCmdkt .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-AeBql4lrVtgCmdkt .cluster-label text{fill:#333;}#mermaid-svg-AeBql4lrVtgCmdkt .cluster-label span{color:#333;}#mermaid-svg-AeBql4lrVtgCmdkt .label text,#mermaid-svg-AeBql4lrVtgCmdkt span{fill:#333;color:#333;}#mermaid-svg-AeBql4lrVtgCmdkt .node rect,#mermaid-svg-AeBql4lrVtgCmdkt .node circle,#mermaid-svg-AeBql4lrVtgCmdkt .node ellipse,#mermaid-svg-AeBql4lrVtgCmdkt .node polygon,#mermaid-svg-AeBql4lrVtgCmdkt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-AeBql4lrVtgCmdkt .node .label{text-align:center;}#mermaid-svg-AeBql4lrVtgCmdkt .node.clickable{cursor:pointer;}#mermaid-svg-AeBql4lrVtgCmdkt .arrowheadPath{fill:#333333;}#mermaid-svg-AeBql4lrVtgCmdkt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-AeBql4lrVtgCmdkt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-AeBql4lrVtgCmdkt .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-AeBql4lrVtgCmdkt .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-AeBql4lrVtgCmdkt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-AeBql4lrVtgCmdkt .cluster text{fill:#333;}#mermaid-svg-AeBql4lrVtgCmdkt .cluster span{color:#333;}#mermaid-svg-AeBql4lrVtgCmdkt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-AeBql4lrVtgCmdkt :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} libcurl HTTP/HTTPS FTP OpenSSL TLS加密


二、详细配置步骤

1. 进入Buildroot配置界面

# 进入泰山派Buildroot目录cd ./buildroot# 启动配置菜单make menuconfig

2. 启用libcurl

Target packages -> Libraries ->Networking -> libcurl [*] # y 选择 SSL/TLS library to use (OpenSSL) ---> # 可进去以选择ssl类型,如果没有,则需要开启openssl# 若找不到,可以使用 ‘/’ 进行搜索# 按下 ‘/’ 进入,打上 libcurl 搜索,打上 openssl 搜索

3. 启用OpenSSL

Target packages -> Libraries -> Crypto -> openssl [*] # 选中OpenSSL

搜索界面如下:
在这里插入图片描述

4. 处理依赖关系

  • 关键依赖项检查
    # 确保zlib启用(libcurl需要)Target packages -> Libraries -> Compression -> zlib [*]

5. 保存配置退出


三、编译与部署

# 保存配置文件make savedefconfig# 在buildroot目录中# 手动将生成的 defconfig 文件内容复制到 ./configs/rockchip_rk3566_defconfig 文件里面# 全量编译(首次)./build.sh all# 只编译buildroot./build.sh rootfs# 使用官方工具烧录镜像

四、功能验证

1. 检查库文件是否包含

# 在泰山派上执行ls /usr/lib/libcurl.so* # 应看到.so文件ls /usr/lib/libssl.so* # 检查OpenSSL

2. 测试HTGET请求

# 示例:访问测试APIcurl -v https://httpbin.org/get# 预期输出:> GET /get HTTP/1.1> Host: httpbin.org> User-Agent: curl/7.75.0> Accept: */*< HTTP/1.1 200 OK{ \"headers\": { ... } }

3. 证书验证测试

# 下载CA证书(若系统未内置)wget https://curl.se/ca/cacert.pem -O /etc/ssl/certs/ca-certificates.crt# 验证HTTPS站点curl --cacert /etc/ssl/certs/ca-certificates.crt https://example.com

五、常见问题与解决

1. 编译报错:openssl missing

  • 原因:libcurl未正确链接OpenSSL
  • 解决:检查配置路径:
     Target packages-> Libraries->Networking -> libcurl [*] # y 选择 SSL/TLS library to use (OpenSSL) ---> # 进去选择ssl类型,如果没有,则需要开启openssl

2. 运行时错误:CURLE_SSL_CACERT_BADFILE

  • 原因:证书路径不正确
  • 解决:指定证书路径:
    export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

3. 网络不通:Could not resolve host

  • 排查步骤
    1. ping httpbin.org 检查DNS解析
    2. 配置静态DNS:
      echo \"nameserver 8.8.8.8\" > /etc/resolv.conf

六、性能优化建议

  1. 裁剪CURL功能

    menuconfig中禁用不需要的协议(如FTP):

    curl configuration -> Protocols (取消FTP/TELNET等)
  2. 静态链接节省内存

    Build options -> libraries (选择static)
  3. 启用硬件加密加速

    在泰山派的加密引擎配置中启用:

    Target packages -> Hardware handling -> Cryptographic API -> Enable hardware crypto acceleration [*]

官方资源

官方Buildroot使用文档|官方资料下载中心

测试资源

嵌入式系统上传gitee文件


通过本文配置,泰山派可安全对接主流云平台(阿里云/AWS/华为云)。后续可扩展实现MQTT over TLS、双向认证等高级功能。