linaro 交叉编译与 .deb 依赖

linaro 交叉编译与 .deb 依赖

我找不到答案所以在这里询问。

我使用 Linaro 64 位 ARM 交叉编译器在 Intel 上的本地 Ubuntu 14.04 64 位 Linux 上编译我的代码(gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++)。

我的代码需要使用libsensor4libsensor4-dev链接器选项-lsensors。我使用 64 位 Ubuntu 14.04 主机 Linux on Intel 编译代码没有问题。但每次我使用 64 位 ARM 交叉编译器编译代码时都会出现错误:

cannot find -lsensors

sensors/sensors.h: no such file or directory.

-lsensors来自libsensors4.deb并且是sensors.h来自libsensors4-dev。那么我如何才能将这两个包放入 Linaro 交叉编译器中?

答案1

aarch64包放入构建系统的一种方法是将其作为外部架构启用:

sudo dpkg --add-architecture aarch64
sudo apt-get update

现在,您可以删除libsensors4-dev您的构建体系结构并将其安装到主机体系结构中aarch64

sudo apt-get install libsensors4-dev- libsensors4-dev:aarch64+

有必要删除构建体系结构包,因为它不能与不同体系结构的同名包共存。libsensors4:aarch64但是依赖项可以与libsensors41共存。这意味着您可以继续在构建系统上运行动态链接的程序libsensors4,但不能使用它libsensors4-dev来链接新的以此为基础构建架构程序。

我不知道您是如何配置和安装交叉编译器的,但 GCC 通常会选择头文件 ( /usr/include) 和库文件 ( /usr/lib/<architecture>-<system-type>) 的规范位置,这正是 DPKG 从中提取它们的位置libsensors4-dev(任何体系结构)。如果不是这种情况,您可以告诉 GCC/G++ 使用 添加包含文件目录,使用-I<PATH>添加库目录-L<PATH>。此外,您还可以使用 列出当前包含目录,gcc -xc++ -E -v /dev/null使用 gcc 列出当前库目录gcc -print-search-dirs


1Multi-Arch如果您查看包控制信息中的字段,则可以检查包是否可以与不同体系结构的“兄弟”共存。“相同”表示可以共存。使用dpkg-query -s <PACKAGE>apt-cache show <PACKAGE>dpkg-deb -I <DEB-FILE>显示包控制信息。有关更多信息,请参阅二进制包控制字段的多架构规范

相关内容