不能交叉编译单声道的ARM [英] Cannot cross-compile Mono for ARM

查看:345
本文介绍了不能交叉编译单声道的ARM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在过去的三天,我一直在试图交叉编译单声道2.11.4为TechNexion暴雪板我的Win7 32位机和$ C上(运行埃未知版本)使用的是虚拟的Ubuntu(12.04) $ cSourcery的Sourcery G ++ ARM工具链,但很少/没有成功。
我已经按照网络上的每一个教程,但它只是不工作。

For the last three days I've been trying to cross-compile Mono 2.11.4 for the TechNexion Blizzard board (running an unknown version of Angstrom) using a virtual Ubuntu (12.04) on my Win7 32 bit machine and CodeSourcery Sourcery G++ ARM toolchain, but with little/no success. I've followed every tutorial on the web but it just doesn't work.

codeSourcery的Sourcery G ++工具链和Scratchbox2(从最新的Git源编译)安装并正常工作。 Scratchbox2设置它使用

CodeSourcery Sourcery G++ toolchain and Scratchbox2 (compiled from the latest git sources) are installed and working. Scratchbox2 set it up using

sb2-init armv7 /home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc

而在正确的目录(〜/ codeSourcery / Sourcery_G ++ _精简版/ ARM-NONE-Linux的gnueabi / libc中)。

while in the correct directory (~/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc).

我可以编译一个简单的世界,你好(CPP),编译和在电路板上运行。在Ubuntu中:

I can compile a simple 'Hello world' (cpp), compile and run it on the board. In Ubuntu:

file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped

我下载的源单声道2.11.4和遵循的说明。第一部分(本地计算机上)效果很好,没有错误。然而,当我运行的第二部分(编译为ARM)的 ./配置按预期工作,但然后做出失败的../ lib中/小型[SOME_FILE]与手臂输出不兼容 。 A 文件在这些文件说,他们确实是英特尔公司的80386可执行文件,但我不知道为什么。

I the downloaded the source for Mono 2.11.4 and followed one of the instructions. The first part (on the native machine) works well, no errors. However, when I run the second part (compiling for ARM) ./configure works as expected but then make fails with "../lib/mini[some_file] is incompatible with arm output". A file on these files says that they are indeed Intel 80386 executables, but I don't know why.

因此​​,下一步是要运行的使清洁并重复上述步骤,但它仍然产生相同的结果。

So the next step was to run a make clean and repeat the steps, but it still produced the same result.

然后我试图 ./配置里面SB2整个事情,而不是它似乎在第一次工作。但随后一些错误弹出构建朗声道:

I then tried to ./configure and make the whole thing inside sb2 instead and it seemed to work at first. But then some errors popped up the build broke:

./.libs/libmini.a(libmini_la-mini-arm.o): In function `mono_arch_init':
/home/dev/source/host-mono/mono-2.11.4/mono/mini/mini-arm.c:689: undefined reference to `debugger_agent_single_step_from_context'
/home/dev/source/host-mono/mono-2.11.4/mono/mini/mini-arm.c:689: undefined reference to `debugger_agent_breakpoint_from_context'
/home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ld: .libs/libmono-2.0.so.1.0.0: hidden symbol `debugger_agent_single_step_from_context' isn't defined
/home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ld: final link failed: Nonrepresentable section on output

在教程上我做错了任何想法,或任何提示我可能会错过?

Any ideas on what I'm doing wrong, or any tips on tutorials I might have missed?

//安德斯

推荐答案

这是更好地使用ScratchBox中编译本地code

It's better to use ScratchBox for compiling native code

[sbox-ARMEL: ~] > mkdir cross
[sbox-ARMEL: ~] > cd cross
[sbox-ARMEL: ~] > tar xzf ../mono-x.xx.tar.gz

[sbox-ARMEL: ~] > cd arm-mono-x.xx
[sbox-ARMEL: ~] > ./configure --disable-mcs-build
[sbox-ARMEL: ~] > make 
[sbox-ARMEL: ~] > make install DESTDIR=`pwd`/tmptree

在另一边打开一个新的终端,并建立管理code。

on the other side open a new terminal and build managed code.

$ mkdir host-mono
$ cd host-mono
$ tar xzf ../mono-1.xx.tar.gz

$ cd mono-1.xx
$ ./configure
$ make
$ make install DESTDIR=`pwd`/tmptree

这篇关于不能交叉编译单声道的ARM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆