buildroot-2023.02.6选择bluez-utils后编译报错

  • qiubin2012 wrote: 2024-04-27 16:25 luckfox pro/max 在buildroot-2023.02.6选择bluez-utils后编译rootfs报错:
    Found pkg-config: /home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/bin/pkgconf (1.6.3)
    Found CMake: /usr/bin/cmake (3.22.1)
    Run-time dependency libpcre found: NO (tried pkgconfig and cmake)
    Run-time dependency libpcre found: NO (tried pkgconfig and cmake)
    Looking for a fallback subproject for the dependency libpcre

    output/build/libglib2-2.72.3/meson.build:2028:2: ERROR: Automatic wrap-based subproject downloading is disabled

    A full log can be found at /home/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/libglib2-2.72.3/build/meson-logs/meson-log.txt
    make[1]: *** [package/pkg-generic.mk:283: /home/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/libglib2-2.72.3/.stamp_configured] Error 1
    make[1]: Leaving directory '/home/sysdrv/source/buildroot/buildroot-2023.02.6'
    make: *** [Makefile:524: buildroot] Error 2
    make: Leaving directory '/home/sysdrv'
    [build.sh:error] Running build_rootfs failed!
    [build.sh:error] exit code 2 from line 551:
    [build.sh:info] make rootfs -C ${SDK_SYSDRV_DIR}

    上面报错信息中提到具体日志查看/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/libglib2-2.72.3/build/meson-logs/meson-log.txt文件,该文件中最末尾报错信息如下:
    CMake binary for 1 is not cached
    CMake binary for 1 specified from cross file, native file, or env var as ['/usr/bin/cmake']
    Found CMake: /usr/bin/cmake (3.22.1)
    Extracting basic cmake information
    Try CMake generator: auto
    Calling CMake (['/usr/bin/cmake']) in /home/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/libglib2-2.72.3/build/meson-private/cmake_libpcre with:
    - "--trace-expand"
    - "--trace-format=json-v1"
    - "--no-warn-unused-cli"
    - "--trace-redirect=cmake_trace.txt"
    - "-DCMAKE_TOOLCHAIN_FILE=/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/libglib2-2.72.3/build/meson-private/cmake_libpcre/CMakeMesonToolchainFile.cmake"
    - "."
    - "-DCMAKE_PREFIX_PATH=/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/cmake"
    -- Module search paths: ['/', '/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot', '/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/opt', '/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr', '/opt', '/usr', '/usr/local']
    -- CMake root: /usr/share/cmake-3.22
    -- CMake architectures: ['x86_64-linux-gnu']
    -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share', 'lib/x86_64-linux-gnu']
    Preliminary CMake check failed. Aborting.
    Run-time dependency libpcre found: NO (tried pkgconfig and cmake)
    Pkg-config binary for 1 is cached.
    Determining dependency 'libpcre' with pkg-config executable '/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/bin/pkgconf'
    env[PKG_CONFIG_PATH]:
    env[PKG_CONFIG_SYSROOT_DIR]: /home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-gnueabihf/sysroot
    env[PKG_CONFIG_LIBDIR]: /home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/pkgconfig:/home/sysdrv/source/buildroot/buildroot-2023.02.6/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/share/pkgconfig
    CMake binary for 1 is cached.
    Preliminary CMake check failed. Aborting.
    Run-time dependency libpcre found: NO (tried pkgconfig and cmake)
    Looking for a fallback subproject for the dependency libpcre

    output/build/libglib2-2.72.3/meson.build:2028:2: ERROR: Automatic wrap-based subproject downloading is disabled
    您好,目前版本的buildroot中的bluez-utils由于缺少头文件和glibc依赖(交叉编译工具为uclibc),所以是无法直接添加的,我们在下个版本的SDK中会添加补丁进行修复。
    您可以尝试在 buildroot-2023.02.6/output/build/bluez5_utils-5.65/src/shared 下将所有.c文件中的 <wordexp.h> 替换为<android/compat/wordexp.h> 解决头文件问题

    Code: Select all

    -#include <wordexp.h>
    +#include <android/compat/wordexp.h>
    
    同时在buildroot-2023.02.6/output/build/bluez5_utils-5.65/src/shared/shell.c 中的cmd_exec函数中将 flags |= WRDE_APPEND 替换为 flags |= WRED_NOCMD

    Code: Select all

    - flag |= WRDE_APPEND;
    + flag |= WRED_NOCMD;
    
    目前这种方式跳过了部分功能来将bluez5_utils 添加进rootfs中,无法确保所有功能都能运行。使用蓝牙的话还是推荐在ubuntu等 glibc 依赖的系统。
    我们会在测试完毕后第一时间更新SDK,请留意官网的更新消息。