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



我是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

请告知

想通了问题,这实际上是一个愚蠢的错误

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

应该是

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

由于您的配方取决于pjsip,因此您需要具有明确的依赖项。只需添加

DEPENDS += 'pjsip' 

到你的食谱。

截至Pyro版本,未使用全局系统根。相反,所有配方都必须显式添加自己的所有依赖项。

最新更新