You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在iMX8-M+ Yocto板编译libthermalgrabber时找不到libusb-1.0

解决libthermalgrabber编译时找不到libusb-1.0的问题
  • 检查交叉编译工具链的库搜索路径
    Yocto交叉编译环境下,aarch64-poky-linux-ld默认搜索路径可能不包含/usr/lib/aarch64-linux-gnu/,可通过两种方式补充:

    1. 在项目CMakeLists.txt中添加库路径:
      link_directories(/usr/lib/aarch64-linux-gnu/)
      
    2. 运行cmake时指定全局库路径:
      cmake .. -DCMAKE_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/
      

    同时确认交叉编译工具链的SDKTARGETSYSROOT环境变量是否正确指向Yocto生成的目标根文件系统,库文件建议放在${SDKTARGETSYSROOT}/usr/lib/目录下,而非主机的/usr/lib/aarch64-linux-gnu/。

  • 验证库文件的完整性与软链接

    1. 检查/usr/lib/aarch64-linux-gnu/下是否存在libusb-1.0.so软链接:
      ls -l /usr/lib/aarch64-linux-gnu/libusb-1.0.so
      
    2. 若软链接缺失,手动创建(替换实际库版本号):
      ln -s /usr/lib/aarch64-linux-gnu/libusb-1.0.so.0.2.0 /usr/lib/aarch64-linux-gnu/libusb-1.0.so
      
    3. 用交叉编译的ld工具直接验证库的可访问性:
      aarch64-poky-linux-ld -L/usr/lib/aarch64-linux-gnu/ -lusb-1.0 --verbose
      
      查看输出中的搜索路径和库匹配结果,确认工具能找到目标库。
  • 调整CMakeLists.txt的链接配置
    改用pkg-config自动定位libusb-1.0的头文件和库路径,替换原直接链接配置:

    find_package(PkgConfig REQUIRED)
    pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
    
    include_directories(${LIBUSB_INCLUDE_DIRS})
    link_directories(${LIBUSB_LIBRARY_DIRS})
    
    target_link_libraries(your_target_name ${LIBUSB_LIBRARIES})
    

    若为交叉编译,需指定目标根文件系统路径:

    cmake .. -DCMAKE_FIND_ROOT_PATH=/path/to/yocto-target-sysroot
    
  • 确认库文件的架构兼容性
    检查安装的libusb库是否为aarch64架构:

    file /usr/lib/aarch64-linux-gnu/libusb-1.0.so.0
    

    输出需包含ELF 64-bit LSB shared object, ARM aarch64,如果是x86架构,需重新获取对应aarch64的libusb-1.0开发包离线安装。

内容的提问来源于stack exchange,提问作者kremerf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:36:19