在 bitbake 配方中链接静态库时出现未定义的引用错误

undefined reference error while linking static library in bitbake recipe

我是 yocto 和 bitbake 的新手,我正在为自定义 imx6 板构建一个 voip 应用程序。我想使用 pjsip 库来构建我的应用程序,我已经在我的 yocto 构建中编译了 pjsip 并生成了 pjsip 库(所有 pjsip 库都是静态的)。我在为调用 pjsip 函数的应用程序构建配方时遇到问题。下面是我的食谱的样子

文件名:rttapp.bb

DESCRIPTION = "Simple voip application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM ="file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r1"

SRC_URI += "file://rttapp.c"
SRC_URI += "file://include"
SRC_URI += "file://lib"

S = "${WORKDIR}"

CFLAGS_prepend += "-I${WORKDIR}/include -DPJ_AUTOCONF=1 -DPJ_IS_BIG_ENDIAN=0 ->DPJ_IS_LITTLE_ENDIAN=1"
LDFLAGS_append += "-L${WORKDIR}/lib -lpjsua2-arm-poky-linux-gnueabi -lstdc++ ->lpjsua-arm-poky-linux-gnueabi -lm -lrt -lpthread -lasound"

do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} rttapp.c -o rttapp
}

当我做 bitbake rttapp 时,我看到的错误如下:

/usr/src/debug/rttapp/1.0-r1/rttapp.c:159: undefined reference to pjsua_create'. collect2: error: ld returned 1 exit status

请指教

由于您的食谱依赖于 pjsip,因此您需要具有显式依赖性。只需添加

DEPENDS += 'pjsip' 

到你的食谱。

Pyro 版本开始,没有使用全局 sysroot。相反,所有配方都必须显式添加它们自己的所有依赖项。

想通了,其实是个愚蠢的错误

${CC} ${CFLAGS} ${LDFLAGS} rttapp.c -o rttapp 

应该是

${CC} rttapp.c ${CFLAGS} ${LDFLAGS} -o rttapp