如何交叉编译 Perl 模块

How to cross compile Perl modules

我正在尝试将 Unix Bench 安装到 iMX6 Yocto 中。 我成功交叉编译了 Unix Bench 源代码。 当我 运行 它时,得到这样的错误:

root@imx6qsabresd:/home/UnixBench# ./Run
Can't locate POSIX.pm in @INC

看起来 Perl 模块丢失了。 那么如何将这些依赖模块安装到Yocto中呢?

use POSIX qw(strftime);
use Time::HiRes;
use IO::Handle;
use FindBin;

顺便说一句,有没有没有 Perl 的 Unix Bench 版本 运行?

OpenEmbedded 构建系统积极地将默认的 Perl 包拆分成微小的模块,以最小化目标系统的大小(当您不需要所有核心 Perl 模块时,您只需不安装所有这些模块),因此安装 'perl' 包与在 Debian 或其他标准发行版中安装 'perl' 包不同。您可以通过 opkg files perl 命令查看 'perl' 安装的内容(当然,如果您使用的是 ipk 包)。

因此,您需要安装在构建 Perl 时已经构建的附加包。他们有非常简单的 perl-module-* 命名方案,因此对于您的包来说,这将是 perl-module-posixperl-module-time-hiresperl-module-io-handleperl-module-findbin。当然它们也可以有一些依赖关系,所以最好为你的程序制定一个合适的配方并适当地指定 RDEPENDS