FTDI驱动程序库在运行时失败

FTDI driver library fail on run

本文关键字:运行时 失败 程序库 FTDI      更新时间:2023-10-16

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

我在plain 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)