我正在尝试交叉编译一些C代码,以便在Phidget SBS4 - 3003上执行它。我已经成功地交叉编译了一个简单的.C文件(printf("hello world");),并使用arm-linux-gnueabihf-gcc工具链在单板机上执行它进行交叉编译。
现在,我正在努力使用phidget库交叉编译代码。我正在尝试./configure --prefix=/usr/arm-linux-gnueabihf --build=i686-pc-linux-gnu --host=arm-linux-gnueabihf as here,但是我得到了一个错误:
configure: error: Missing libusb!我已经安装了libusb-1.0-0-dev。
我该怎么做?非常感谢!
发布于 2020-12-01 03:33:12
有两种可能性。第一个问题是libusb编译问题。你的机器上真的有arm-none-linux-gnueabihf和arm-linux-gnueabihf吗?如果您没有第一个,请使用--host=arm-none-linux-gnueabihf构建libusb。尽管很奇怪,但您将构建一个x86库。如果您构建的库真的是用于arm的,您可以使用readelf -h或任何其他您想要的工具进行检查。
第二个可能性是库的位置,你选择了/usr/arm-linux-gnueabihf/作为前缀,但是你怎么确定/usr/arm-linux-gnueabihf/lib会在gcc传递给链接器的路径列表中(在ubuntu 18.04中就是这样)。当您链接一个简单的c文件时,您可以通过添加-v来验证哪些文件夹被传递给链接器。您需要在其中一个文件夹中安装libusb,因为不幸的是,在phidget库的配置中,没有像libusb_path这样的选项。您还可以修改配置。
如果您在特定于arm的文件夹中安装libusb的良好版本,则不会有任何问题。但是,如果在arm文件夹中安装x86库,或者反之亦然,则会出现ld错误file format not recognized。
https://stackoverflow.com/questions/65039478
复制相似问题