Yocto+;自动工具库&x2B;CMake应用程序=链接器错误

Yocto+;自动工具库&x2B;CMake应用程序=链接器错误,cmake,linker-errors,yocto,autotools,Cmake,Linker Errors,Yocto,Autotools,我有一个带有自己图层的Yocto BSP,其中包括一个autotools3rdy零件库()。 我的应用程序“.bb”文件有以下几行,说明需要libcoap: DEPENDS += "libcoap" RDEPENDDS_${PN} += " libcoap libcoap-dev libcoap-devstatic" 我可以看到库文件正在复制到sysroot: $ ls -l /projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angs

我有一个带有自己图层的Yocto BSP,其中包括一个
autotools
3rdy零件库()。 我的应用程序“.bb”文件有以下几行,说明需要
libcoap

DEPENDS += "libcoap"
RDEPENDDS_${PN} += " libcoap libcoap-dev libcoap-devstatic"
我可以看到库文件正在复制到sysroot:

$ ls -l /projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/coap-playground/1.0-r0/recipe-sysroot/usr/lib/libcoap*
-rw-r--r-- 2 udev udev 286430 Ago 21 13:53 /projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/coap-playground/1.0-r0/recipe-sysroot/usr/lib/libcoap.a
lrwxrwxrwx 1 udev udev    173 Ago 29 14:33 /projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/coap-playground/1.0-r0/recipe-sysroot/usr/lib/libcoap.so -> ../../projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/libcoap/4.1.2+gitAUTOINC+d48ab449fd-r0/image/usr/lib/libcoap.so.4.1.2
-rwxr-xr-x 2 udev udev  38444 Ago 21 13:53 /projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/coap-playground/1.0-r0/recipe-sysroot/usr/lib/libcoap.so.4.1.2
不难发现符号链接有点奇怪:

/projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/coap-playground/1.0-r0/recipe-sysroot/usr/lib/libcoap.so -> ../../projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angstrom-linux-gnueabi/libcoap/4.1.2+gitAUTOINC+d48ab449fd-r0/image/usr/lib/libcoap.so.4.1.2
My
libcoap.bb
包含
inherit relative_symlinks
(否则将创建指向“/projects”的绝对链接,bitbake将失败),但创建的符号链接仅将“../../”前置到原始链接

所以。。。问题是:

  • 为什么我需要继承相对符号链接?
    makeinstall
    是否应该在开箱即用的情况下创建一个相对于sysroot的符号链接
  • 生成的
    Makefile
    包含:

    librootdir = $(DESTDIR)$(prefix)/lib
    # ...
    ln -s $(librootdir)/$(LIBSO).4.1.2 $(librootdir)/$(LIBSO)
    
    我想
    $(DESTDIR)
    在安装
    bitbake
    时会指向正确的位置

  • 什么是正确的解决方法?另一端是否有问题(应用程序试图链接到
    libcoap
  • 提前谢谢


    资源

    libcoap.bb
    基于互联网,非常简单:

    SUMMARY = "A C implementation of IETF Constrained Application Protocol (RFC 7252)"
    DESCRIPTION = "Libcoap provides an implementation of the IETF CoAP protocol"
    HOMEPAGE = "http://sourceforge.net/projects/libcoap/"
    SECTION = "libs/network"
    
    PROVIDES = "libcoap"
    
    SRCREV = "d48ab449fd05801e574e4966023589ed7dac500b"
    # Lookout for PV bump too when SRCREV is changed
    PV = "4.1.2+git${SRCPV}"
    LICENSE = "GPLv2 | BSD"
    LIC_FILES_CHKSUM = "file://${S}/LICENSE.BSD;md5=1164f52f9c4db2c13f681b201010d518 \
                        file://${S}/LICENSE.GPL;md5=4641e94ec96f98fabc56ff9cc48be14b"
    
    S = "${WORKDIR}/git"
    
    SRC_URI = "git://git.code.sf.net/p/libcoap/code"
    
    inherit autotools-brokensep relative_symlinks
    
    EXTRA_OECONF += "--with-shared"
    EXTRA_OEMAKE += "all"
    
    INSANE_SKIP_${PN} = "ldflags"
    BBCLASSEXTEND = "native nativesdk"
    

    CMake与您的问题有何关系?尝试链接
    libcoap
    的应用程序是CMake'd,我不确定它是否对链接器错误有任何影响。Thaks询问@Tsyvarev