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库中链接时,为什么要查找共享库?
答案 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_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)