【问题标题】:Perl Cross Compilation: MAKEPerl 交叉编译:MAKE
【发布时间】:2012-02-29 18:31:12
【问题描述】:

我一直在尝试从 Linux 机器为 NetBSD 目标交叉编译 Perl-5.14.2。 使用以下选项成功调用配置脚本,

./Configure -des -Dusecrosscompile 
-Dtargetarch=netbsd 
-Dosvers=3.0.0 
-Dtargethost=10.184.22.48 
-Dtargetuser=username
-Dusrinc=.../sb1-mips/usr/include 
-Dlibpth=.../xc-sb1-mips/netbsd/Lib/lib 
-Dcc=.../mips64-netbsdelf-gcc

配置后,make 不成功。
它从创建 miniperlmain.o 文件开始就在不同的地方中断。

例如生成gv.o文件时出现以下错误:

gv.c: In function `Perl_try_amagic_un':
gv.c:2018: error: void value not ignored as it ought to be
gv.c:2029: error: void value not ignored as it ought to be
gv.c:2029: warning: cast from pointer to integer of different size
gv.c: In function `Perl_try_amagic_bin':
gv.c:2061: error: void value not ignored as it ought to be
gv.c:2063: error: void value not ignored as it ought to be
make: *** [gv.o] Error 1 

现在为了摆脱这些错误,我将两个标志,即 -DPERL_IMPLICIT_CONTEXT-DPERL_GCC_BRACE_GROUPS_FORBIDDEN 传递给 C 编译器 CCFLAGS,从而解决了问题。

  • 由于它是自定义构建,是否想了解所有必须传递的CCFLAGS 才能成功构建?
  • 每个标志是什么意思?
  • 他们有任何可用的文档吗?

【问题讨论】:

  • 交叉编译是 Perl 不太擅长的事情。我建议在 NetBSD 中建立一个构建环境,然后在那里编译它。您的构建环境可以在 VM 中。
  • @Brad Gilbert 是的,交叉编译 Perl 花了我所有的时间,但没有任何成功。由于资源有限,无法为 NetBSD 构建环境。
  • @BradGilbert INSTALL 文档说,Perl 交叉编译构建 miniperl 可执行文件而不是 Perl。但是,我能够为我的体系结构构建 miniperl 二进制文件,但无法将 Perl 模块打包并传输到目标机器。可能是什么问题以及如何转移模块?
  • 我实际上对 Perl5 的内部结构并不了解。如果您想进一步讨论此问题,请查看Perl 5 Porters mailing list

标签: perl cross-compiling perl-module


【解决方案1】:

使用vagrant。它有一些OpenBSD and FreeBSD images。希望这些将与 NetBSD 兼容。

您可以通过它非常快速地获得构建环境。然后你就可以愉快地转移和构建你的代码了:)

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2011-03-13
    相关资源
    最近更新 更多