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

如何解决BitBake编译do-client时ERR_reason_error_string未定义引用错误

问题原因

该报错属于链接阶段依赖缺失:ERR_reason_error_string是OpenSSL的libcrypto库导出的符号,当前编译配置没有将libcrypto加入链接参数,导致符号找不到。

解决方法

修改你的deliveryoptimization-agent_git.bb配方即可,具体改动如下:

  1. 首先在DEPENDS变量中添加openssl依赖,确保Yocto在编译前将OpenSSL的头文件、库文件部署到对应sysroot目录
  2. 新增链接参数,将-lcrypto传入链接器

改后配方核心片段参考

LICENSE = "CLOSED"

DO_SRC_URI ?= "gitsm://github.com/microsoft/do-client;branch=main"
SRC_URI = "${DO_SRC_URI}"
SRCREV = "cd2eaadc0755c93bb31234a19a4577aced9845e5"

python () {
    src_uri = d.getVar('DO_SRC_URI')
    if src_uri.startswith('git'):
        d.setVar('PV', '1.0+git' + d.getVar('SRCPV'))
        d.setVar('S', d.getVar('WORKDIR') + "/git")
    elif src_uri.startswith('file'):
        d.setVar('S',  d.getVar('WORKDIR') + "/do-client")
}

# 新增openssl依赖
DEPENDS = "boost cpprest libproxy msft-gsl openssl"

inherit cmake

BUILD_TYPE ?= "Debug"
EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=${BUILD_TYPE}"
EXTRA_OECMAKE += "-DDO_BUILD_TESTS=OFF"
EXTRA_OECMAKE += "-DDO_INCLUDE_AGENT=ON"
EXTRA_OECMAKE += "-Dcpprestsdk_DIR=${WORKDIR}/recipe-sysroot/usr/lib/cmake"

# 新增链接参数
TARGET_LDFLAGS += "-lcrypto"

BBCLASSEXTEND = "native nativesdk"

备用方案

如果上述方法不生效(部分CMake工程会忽略全局LDFLAGS),可以将新增的TARGET_LDFLAGS行替换为通过CMake参数传递链接选项:

EXTRA_OECMAKE += "-DCMAKE_EXE_LINKER_FLAGS:STRING=-lcrypto"

修改后重新执行编译即可解决该链接错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:57:03