[Buildroot] Error linking against target architecture while building new package

Thomas Petazzoni thomas.petazzoni at bootlin.com
Thu Sep 14 13:14:36 UTC 2023


On Thu, 14 Sep 2023 12:15:27 +0200
Sourabh Hegde <hrsourabh011 at gmail.com> wrote:

> /usr/bin/make -j17 LDFLAGS="" -C
> /.../build/imx-nn-accelerator-lf-5.15.71-2.2.1
> SDKTARGETSYSROOT=/.../per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot
> AQROOT=/.../build/imx-nn-accelerator-lf-5.15.71-2.2.1
>   LINK    libovxlib.so.1.1.0
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libOpenVX.so
> when searching for -lOpenVX
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libOpenVX.so
> when searching for -lOpenVX
> /usr/bin/ld: cannot find -lOpenVX
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libOpenVXU.so
> when searching for -lOpenVXU
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libOpenVXU.so
> when searching for -lOpenVXU
> /usr/bin/ld: cannot find -lOpenVXU
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libCLC.so
> when searching for -lCLC
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libCLC.so
> when searching for -lCLC
> /usr/bin/ld: cannot find -lCLC
> /usr/bin/ld: skipping incompatible
> /build/per-package/imx-nn-accelerator/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/libVSC.so
> when searching for -lVSC

You're using the host linker here (/usr/bin/ld), which of course will
not work to link binaries for the target. Replace:

define IMX_NN_ACCELERATOR_BUILD_CMDS
    $(MAKE) LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) \
        SDKTARGETSYSROOT=$(STAGING_DIR) \
        AQROOT=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
endef

By:

define IMX_NN_ACCELERATOR_BUILD_CMDS
    $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \
        SDKTARGETSYSROOT=$(STAGING_DIR) \
        AQROOT=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
endef

TARGET_CONFIGURE_OPTS contains the definitions of CC, LD, CFLAGS,
LDFLAGS, and a whole bunch of other variables.

Also, AQROOT can use $(IMX_NN_ACCELERATOR_BUILD_DIR) directly.

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com



More information about the buildroot mailing list