【问题标题】:FTDI driver library fail on runFTDI 驱动程序库在运行时失败
【发布时间】:2017-07-08 17:07:56
【问题描述】:

4 使用 Raspian Wheezy 对 Raspberry Pi B 进行编程。我的 pi 有带有 FTDI usb/串行芯片 FT231X 的定制子板。我找到了这个设备的驱动程序( FTD2xx.1.1.12 ),它带有一些示例程序。根据文档,我将驱动程序( .a 和 .so )安装到 /usr/loca/lib ,然后运行其中一个示例程序。这是使用 SSH 客户端完成的,即不是来自 Netbeans。有构建错误,程序运行没有错误。现在,当我尝试在我的 Netbeans 构建中包含静态库时,它构建正常,但是当我尝试运行(调试或发布构建)时,它没有运行并返回错误“加载共享库时出错:libftd2xx.so:无法打开共享目标文件:没有这样的文件或目录。运行失败(退出值 127,总时间 203 毫秒)“。首先,当我在 Netbeans 的静态 .a 库中链接时,它为什么要寻找共享库?

【问题讨论】:

    标签: c++ netbeans shared-libraries


    【解决方案1】:

    我在试图编译其中一个示例的纯 c 语言中遇到了类似的问题。 我在做

    gcc main.c -o ftdiTest -lftd2xx
    

    但遇到了同样的错误。 使用rpath 标志编译解决了这个问题:

    gcc main.c -o ftdiTest -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
    

    如果确实需要,我不需要,但将 LD_LIBRARY_PATH 设置为 /usr/local/lib 可能会有所帮助。

    可执行文件需要使用sudoftdi_sio 运行,如果存在usbserial 驱动程序,则需要在使用libftd2xx 运行应用程序之前卸载。这是自述文件中的引述:

    如果出现“FT_Open failed”消息: 也许内核自动为 FTDI USB 设备。

    `sudo lsmod`
    
    If "ftdi_sio" is listed:
        Unload it (and its helper module, usbserial), as follows.
    
        `sudo rmmod ftdi_sio`
        `sudo rmmod usbserial`
    
    Otherwise, it's possible that libftd2xx does not recognise your 
    device's Vendor and Product Identifiers.  Call FT_SetVIDPID before
    calling FT_Open/FT_OpenEx/FT_ListDevices.
    

    这也应该在 c++ 中工作(我在 OpenFrameworks 项目中使用过相同的)

    另外,我记得 Raspberry PI1 (armv6) 上的库存在一些问题,并通过电子邮件发送了 FTDI 支持。他们提供了一个重新编译的库,它可以工作。相同的库适用于 Raspberry PI2(armv7)

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多