【问题标题】:.h: No such file or directory YOCTO/Openembedded.h:没有这样的文件或目录 YOCTO/Openembedded
【发布时间】:2017-04-13 09:57:41
【问题描述】:

我正在尝试使用 Yocto/Openembedded 编译一个简单的 PJSIP 程序。我有这个错误:
fatal error: pjsua-lib/pjsua.h: No such file or directory
这是我的 Makefile:

all: simple_pjsua

simple_pjsua: simple_pjsua.c
    $(CC) -o $@ $< `pkg-config --cflags --libs libpjproject`

clean:
    rm -f simple_pjsua.o simple_pjsua

这是我的 simplepjsua_2.6.bb:

DESCRIPTION = "Open source SIP stack and media stack for presence, im/instant \
               messaging, and multimedia communication"
SECTION = "libs"
HOMEPAGE = "http://www.pjsip.org/"
# there are various 3rd party sources which may or may not be part of the
# build, there license term vary or are not explicitely specified.
LICENSE = "CLOSED"

PR = "r0"

SRC_URI = "file://simple_pjsua.c \
           file://Makefile \
           file://README.txt"

S = "${WORKDIR}/"

do_compile() {
    cd ${S}
    #to prevent libpjproject.PC not found error
    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    oe_runmake
}

do_install() {
        install -m 0755 -d ${D}${bindir} ${D}${docdir}/simple_pjsua
        install -m 0755 ${S}/simple_pjsua ${D}${bindir}
        install -m 0755 ${WORKDIR}/README.txt ${D}${docdir}/simple_pjsua
}

我尝试在 Makefile 中添加 INC=-I/usr/include/pjsua-lib/,但没有任何改变。如果我想在我的计算机上使用 make 编译它,它可以工作。

我能做什么?

编辑:
我尝试在 bb 文件的 do_compile() 中添加export LD_LIBRARY_PATH=/usr/include。同样的问题

【问题讨论】:

    标签: c++ gcc makefile yocto openembedded


    【解决方案1】:

    您正在链接主机库,这确实不是正确的做法,除非您正在构建本机包(您不是)。

    您需要为 pjsip 创建一个配方来构建和安装它,然后这个配方应该依赖于它。

    【讨论】:

    • 谢谢!你是我的男人!我已经有一个 PJSIP 层,我刚刚添加了DEPENDS = "pjproject",现在我的程序可以在我的板上运行。再次感谢!
    【解决方案2】:

    确保 /usr/include/pjsua-lib/pjsua.h 文件存在。

    # INC=-I/usr/include/pjsua-lib # not ok
    INC=-I/usr/include
    

    【讨论】:

    • 感谢您的帮助。同样的错误:/usr$ find -iname "pjsua.h" ./local/include/pjsua-lib/pjsua.h ./local/include/pjsua.h ./include/pjsua-lib/pjsua.h ./include/pjsua.h
    • 你必须包含你的 bb 的路径或者其他地方,而不是 makefile。 elinux.org/Bitbake_Cheat_Sheet
    • 我尝试在 bb 文件的 do_compile() 中添加 export LD_LIBRARY_PATH=/usr/include。同样的问题
    • 这里的问题是您没有将任何这些绑定到“本机” sysroot。您正在摆脱 OE 用来构建的交叉编译沙箱,并从主机中获取它。 (糟糕,糟糕,糟糕......)您需要修补 makefile 以正确引用 NATIVE sysroot 中所需的 Python 路径。
    • 至于这意味着什么,我……不确定……因为我自己并不在乎。我只需要让自定义内核构建配方按原样做正确的事情。
    猜你喜欢
    • 2021-07-15
    • 2023-01-13
    • 2018-03-09
    • 2017-01-22
    • 2014-12-06
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多