我正在尝试交叉编译ARM体系结构的perl解释器( FriendlyARM Micro2440).我正在使用制造商提供的 ARM-Linux GCC 4.4.3交叉编译器.该板正在运行Linux 2.6.

我能够成功交叉编译一个基本的“Hello World”应用程序,并在目标机器上运行.

我已经下载了perl v5.12.3源代码.我能够为Ubuntu做一个正常的perl编译.我现在正在尝试为ARM板进行交叉编译.我正在使用源代码下载中的perl-5.12.3 / Cross文件夹.

make patch成功了,但是当我运行make perl时,它就失败了

LD_LIBRARY_PATH=/home/reed022/.local/share/Trash/files/perl-5.2.12.3 arm-linux-gcc  -o miniperl \
        gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o   \
        miniperlmain.o opmini.o perlmini.o -lnsl -ldl -lm -lcrypt -lutil -lc 
LD_LIBRARY_PATH=/home/reed022/.local/share/Trash/files/perl-5.2.12.3  ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
./miniperl: 1: Syntax error: word unexpected (expecting ")")

我认为输出的相关部分是./miniperl -w -Ilib -MExporter -e’<?>‘ ||做最小的一部分.虽然我不确定.对我来说,交叉编译环境会尝试运行测试似乎很困惑,因为它的目标是与构建它的系统不同的系统.

我完全迷失了,从这里开始.我与之交谈的人对交叉编译程序没有多少经验.

UPDATE
我决定删除perl源文件夹并重新提取它,认为以前为Ubuntu主机编译的perl可能会弄乱当前的交叉编译.我现在得到一个不同但相似的错误.

`sh  cflags "optimize='-O2'" generate_uudmap.o` -fexpensive-optimizations -fomit-frame-pointer -O2 -march=armv4 -mtune=strongarm1100 generate_uudmap.c
      CCCMD =  arm-linux-gcc -DPERL_CORE -c  -fexpensive-optimizations -fomit-frame-pointer -O2 -march=armv4 -mtune=strongarm1100  -O2 -Wall 
arm-linux-gcc -o generate_uudmap  generate_uudmap.o -lnsl -ldl -lm -lcrypt -lutil -lc 
./generate_uudmap uudmap.h bitcount.h
./generate_uudmap: 1: Syntax error: word unexpected (expecting ")")
make[1]: *** [bitcount.h] Error 2
make[1]: Leaving directory `/home/reed022/Downloads/perl-5.12.3'
make[1]: Entering directory `/home/reed022/Downloads/perl-5.12.3'
make[1]: *** No rule to make target `more'.  Stop.
make[1]: Leaving directory `/home/reed022/Downloads/perl-5.12.3'
make: *** [perl] Error 2

解决方法

显然,交叉编译perl的方法不是在Cross目录下进行.我需要将标志传递给Configure来进行设置.我还需要使用SSH服务器设置ARM计算机(我使用了 dropbear).我用过的旗帜是
sh ./Configure 
    -Dusecrosscompile 
    -Dtargethost=<IP of ARM computer> 
    -Dtargetuser=<user name>
    -Dtargetarch=arm-linux 
    -Dcc=arm-linux-gcc 
    -Dusrinc=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/ 
    -Dincpth=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/ 
    -Dlibpth=/opt/FriendlyARM/toolschain/4.4.3/lib 
    -Dtargetdir=/sdcard/perl

ARM的交叉编译perl的更多相关文章

  1. Swift快速入门五集合

    相关文章Swift快速入门(一)第一个Swift程序Swift快速入门(二)基本数据类型Swift快速入门(三)运算符Swift快速入门(四)流程控制前言Swift提供了数组和字典两种集合类型来存储数据,Swift的数组用来存储顺序相同类型相同的类型,字典则采用kay-value的形式存储数据。修改字典字典提供了updataValue()方法来修改字典的value值,该方法会返回一个Sting?

  2. 将Trickle移植到android

    >如何告诉编译器链接我之前为android交叉编译的共享库,以便为android生成最终的可执行命令行应用程序.而且这甚至可以在Android上移植涓流?

  3. android – PANIC:’arm’CPUS缺少模拟器引擎程序

    我得到了与下面链接中提到的相同的问题.但是这个问题已被搁置,我仍在寻求解决方案.https://stackoverflow.com/questions/27146511/panic-missing-emulator-engine-program-for-arm-cpus-eclipse所以我想提出这个问题并在这里问一下.直到昨天,模拟器工作正常.但是从今天起,我在尝试打开模拟器时收到以下错误我的A

  4. Android是否真的存在于ARM之外的其他平台上?

    我想将用C编写的应用程序移植到android.将应用程序从C转换为Java将需要大量工作,我更愿意使用该应用程序更好地为该平台,而不是修复转换错误和解决重构问题.NDK似乎是一条很好的路线,但实际上我不想错过一个平台只是因为NDK不支持或不支持它.Android声称支持MIPS,ARM,X86和其他……是否有任何运行或将运行Android的非ARM设备?

  5. android – 关于arm-eabi-gcc和交叉编译

    如果是的,然后问题2:我正在尝试编译这样一个库:libao.使用这些命令:在组装结束时收到以下内容:configure:错误:在此平台上找不到16位类型!如何修复和正确配置库?

  6. 交叉编译Freetype 2.5.3 for Android

    noconfigure:error:in/cygdrive/d/Development/tmp/freetype2/builds/unix':configure:error:CcompilercannotcreateexecutablesSeeconfig.log’formoredetailsbuilds/unix/detect.mk:86:recipefortarget‘setup’Failedmake:*[setup]Error77一些config.log文件:gccversion4.8configu

  7. Android模拟器ABI

    序言:这个问题已经过时了.创建Android虚拟设备时,可以选择cpu/ABI.我已经尝试了所有可用的目标–除了ARM之外别无选择.我的目标是Android3.2.我假设这是为了在x86上模拟平板电脑或上网本.那些甚至存在于硬件中吗?编辑:在AndroidToolsv17中,API级别10下有一个可选的IntelAtomx86映像.编辑2:ARMv7a现在也在那里.到目前为止没有MIPS.EDIT3:MIPS仿真器和图像现在也可用.等待一些新架构(ARMv8?

  8. 如何强制Android应用程序使用32位或64位库

    在具有64位ARM的Android设备上,将有两个版本的库,32位和64位,它们的性能可能会有所不同.我想知道是否有办法强制应用程序使用32位或64位库.解决方法安装apk时可以指定ABI.adbinstall–abi

  9. Android NDK – 它支持直接ARM代码或只支持Thumb

    我被要求评估我们的产品的Android平台,我正在看各种选项,我只是刚刚刮目前的表面,一件事令我困扰的是,我看不到如何编译代码作为直接的ARM代码,我知道Thumb运行速度较慢,我们将需要在代码的关键部分的性能.我认为应该只是在Android.mk文件的LOCAL_CFLAGS中设置-march标志,但是我不能让它工作…解决方法在Android.mk中为模块指定以下标志将编译直接的ARM代码.启用优化也可能有助于:

  10. 如何在Android项目中使用ARM汇编代码?

    我对Assembly和ARM没有特别的经验,但是我可以在其中编写一些例程,我想看看它们是如何在装有ARM的Android设备上运行的.将程序代码文件包含在Android项目中的程序是什么?我可以只从本机代码或从Java调用吗?

随机推荐

  1. 数组 – Perl中有什么神奇的数组?

    在Perldocumentationforreverse中,我发现:“请注意,将数组反转到自身(如@a=reverse@a)将尽可能保留不存在的元素;即对于非魔法数组或具有EXISTS和DELETE方法的绑定数组.什么属性区分神奇和非魔法阵列?解决方法一个神奇的阵列是一个执行它的操作不仅仅是改变内容.只有内置的魔术阵列是@ISA,而且这是非常不明显的.正如句子所暗示的,魔术阵列主要是一个绑定的阵列

  2. perl – 使用“isa”方法的最佳方式?

    什么是“最好的”使用方式“isa()”可靠?解决方法Scalar::Util实现明确更好.它避免了eval{}的开销,它总是导致设置一个附加变量.Scalar::Util实现更容易阅读.如果eval也失败了,我相信发生的是你在树之前向后走到eval之前的状态–这是如何实现复位状态.这带来了额外的故障开销.基准根本不是一个对象对象传递isa检查对象出现故障现象检查测试代码:我使用这是为i486-linux-gnu-thread-multi建立的perl,v5.10.1(*),以及Scalar::Util,1

  3. 在CORE :: GLOBAL中哪些Perl内置函数不能被覆盖?

    解决方法toke.c中任何值为负的值都可以被覆盖;所有其他人可能不会.你可以看源码here.例如,我们来看看第10,396行的waitpid:由于waitpid为负数,因此可能会被覆盖.grep怎么样?这是积极的,所以不能被覆盖.这意味着以下关键字不能被覆盖:chop,defined,delete,do,dump,each,else,elsif,eval,exists,for,foreach,format,glob,goto,grep,if,keys,last,local,m,map,my,next,no

  4. 如何在Perl中打印由换行符分隔的列表元素?

    什么是最简单的打印所有列表的元素以Perl中的换行符分隔的元素?解决方法在Perl5.10中:其他方式:或:或者怎么样?

  5. 使用Perl如何获取文件大小(以兆字节为单位)?

    我想以磁盘的形式获取磁盘上的文件大小.使用-s运算符给出了以字节为单位的大小,但是我将假设,然后将其除以魔术数字是一个坏主意:我应该使用只读变量来定义1024,还是有一种编程方式来获取一千字节的字节数?

  6. perl – 如何测试/分类CPAN模块的utf8正确性

    例如:File::Slurp,如果你将读取该文件您将根据命令行开关获得不同的结果,并且perl-CSDA将无法正常工作.伤心.(是的,我知道比Encode::decode(“utf8”,read_file($file,binmode=>’:raw’));将帮助,但是SAD.我的问题:>在这里任何首选方式,如何测试/分类什么CPAN模块是utf8安全/准备/正确?>这里是像Perl::Criticforutf8这样的东西–什么将检查模块源可能的utf8不正确?总结以上是DEVMAX为你收集整理的perl–如

  7. 如何删除Perl字符串中的空格?

    如果我声明一个值为’3’的变量$myString.是否有任何功能来删除返回值的空格.有点像SomeFun然后返回’3′.输出:你可以注意到’vid’=>‘0’,上面的代码从theanswer.我正在研究它.总结以上是DEVMAX为你收集整理的如何删除Perl字符串中的空格?如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  8. 如何在mod_perl2下运行Devel :: Cover?

    Unfortunately,Devel::Coverdoesnotyetworkwiththreads.它也不适用于prefork.在startup.pl中使用,Devel::Cover问题perl5.8.9,Apache2.2.13.我的操作系统是FreeBSD,如果重要.同样的问题是reportedforwin32.更新:PerlTrace全部输出解决方法邪恶之源似乎是Apache::DBI.

  9. 如何使用Perl中的C类?

    我有一套用C写的课.从Perl脚本中调用它们的最佳方法是什么?

  10. perl – 在Emacs中以双模式更好的缩进

    我正在使用Emacs来修改Perl和Verilog交织的代码.我正在使用two-mode-mode在两者之间切换,这样可以预期.问题是perl代码与//一行一行地表示;如下图所示:而双模式则认识到它是Perl,它是逐行的,所以缩进等在线上无意义.我想做的是使Perl代码像往常一样格式化,但忽略//;字符.有什么想法吗?我刚刚开始偷看模式文件,它们是可以理解的复杂的,所以任何提示都不会感激!

返回
顶部