0

我正在尝试交叉编译一些 C 代码,以便在 Phidg​​et SBS4 - 3003 上执行它。我已经成功交叉编译了一个简单的 .C 文件( )并使用交叉编译工具链printf("hello world");在 SBC 上执行它。arm-linux-gnueabihf-gcc

现在我正在努力使用 phidget 库交叉编译代码。我正在尝试如此./configure --prefix=/usr/arm-linux-gnueabihf --build=i686-pc-linux-gnu --host=arm-linux-gnueabihf所示,但出现错误:

configure: error: Missing libusb! 我已经安装了 libusb-1.0-0-dev。

我应该怎么办 ?非常感谢 !

4

1 回答 1

1

有两种可能性。第一个是 libusb 编译问题。您的机器中真的有 arm-none-linux-gnueabihf 和 arm-linux-gnueabihf 吗?如果您没有第一个并使用--host=arm-none-linux-gnueabihf. 尽管很奇怪,但您将构建一个 x86 库。readelf -h如果您构建的库确实适用于 arm,您可以使用或任何其他您想要的工具进行检查。

第二种可能性是库位置,您选择 /usr/arm-linux-gnueabihf/ 作为前缀,但是您如何确定 /usr/arm-linux-gnueabihf/lib 将在路径 gcc 传递给链接器的列表中(在 ubuntu 18.04 就是这种情况)。您可以通过-v在链接一个简单的 c 文件时添加哪些文件夹传递给链接器来验证。您需要在其中一个文件夹中安装 libusb,因为不幸的是,在 phidget 库的配置中,没有像 libusb_path 这样的选项。您还可以修改配置。

如果您将好的版本的 libusb 安装在特定于 arm 的文件夹中,则不会有任何问题。但是,如果您在 arm 文件夹中安装 x86 库,反之亦然,您将遇到 ld 错误file format not recognized

于 2020-11-30T19:33:12.100 回答