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

时间:2014-07-31 10:38:32

标签: c++ netbeans shared-libraries

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

1 个答案:

答案 0 :(得分:0)

我在普通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可能会有所帮助。

可执行文件需要与sudo一起运行,ftdi_siousbserial驱动程序需要在使用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)