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