代码之家  ›  专栏  ›  技术社区  ›  Mark

libusb在路径中,但链接器找不到它

  •  0
  • Mark  · 技术社区  · 7 年前

    通常,当链接器找不到路径中实际存在的库时,这是因为某些二进制不兼容(即大约32/64位)。 在我的情况下,这似乎是不同的,我没有找到一个问题来回答这个问题。

    Rapsberry Pi 3b+,Raspbian Stretch Lite,尝试为3TouchPad编译微芯片SDK。

    编译失败的原因如下:

    mkdir -p build/bin
    gcc -o build/bin/2draw build/2draw/2draw.o  -Lbuild/bin -lmchp_hmi -L/lib/arm-linux-gnueabihf/ -lusb -Wl,-rpath,\$ORIGIN -lcurses
    /usr/bin/ld: cannot find -lusb
    collect2: error: ld returned 1 exit status
    Makefile:125: recipe for target 'build/bin/2draw' failed
    make: *** [build/bin/2draw] Error 1
    

    以下是关于“失踪”图书馆的详细信息:

    $ ldconfig -p | grep libusb
        libusb-1.0.so.0 (libc6,hard-float) => /lib/arm-linux-gnueabihf/libusb-1.0.so.0
        libusb-1.0.so (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libusb-1.0.so
        libusb-0.1.so.4 (libc6,hard-float) => /lib/arm-linux-gnueabihf/libusb-0.1.so.4
    
    $ file /lib/arm-linux-gnueabihf/libusb-1.0.so.0.1.0 
    /lib/arm-linux-gnueabihf/libusb-1.0.so.0.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=a93e56d2846806b7adc76e674493c76e54e3ca9e, stripped
    

    我觉得没问题。我安装了它 sudo apt-get install libusb-1.0-0-dev .

    是否有其他原因阻止链接器查找现有库?

    编辑

    足够有趣…即使我也无法推断原因。

    $ ld -lusb --verbose
    GNU ld (GNU Binutils for Raspbian) 2.28
      Supported emulations:
       armelf_linux_eabi
       armelfb_linux_eabi
    
    ==================================================
    attempt to open //usr/local/lib/arm-linux-gnueabihf/libusb.so failed
    attempt to open //usr/local/lib/arm-linux-gnueabihf/libusb.a failed
    attempt to open //lib/arm-linux-gnueabihf/libusb.so failed
    attempt to open //lib/arm-linux-gnueabihf/libusb.a failed
    attempt to open //usr/lib/arm-linux-gnueabihf/libusb.so failed
    attempt to open //usr/lib/arm-linux-gnueabihf/libusb.a failed
    attempt to open //usr/local/lib/libusb.so failed
    attempt to open //usr/local/lib/libusb.a failed
    attempt to open //lib/libusb.so failed
    attempt to open //lib/libusb.a failed
    attempt to open //usr/lib/libusb.so failed
    attempt to open //usr/lib/libusb.a failed
    attempt to open //usr/arm-linux-gnueabihf/lib/libusb.so failed
    attempt to open //usr/arm-linux-gnueabihf/lib/libusb.a failed
    ld: cannot find -lusb
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Florian Weimer    7 年前

    -lLIB libLIB.so libLIB.a LIB .so -dev -devel