无法交叉编译Mono for ARM

use*_*242 5 mono arm cross-compiling embedded-linux

在过去的三天里,我一直试图在我的Win7 32位机器和CodeSourcery Sourcery G ++ ARM工具链上使用虚拟Ubuntu(12.04)交叉编译Mono 2.11.4 for TechNexion Blizzard板(运行未知版本的Angstrom) ,但很少/没有成功.我已经按照网络上的每个教程,但它不起作用.

CodeSourcery Sourcery G ++工具链和Scratchbox2(从最新的git源代码编译)已安装并正常工作.Scratchbox2使用它进行设置

sb2-init armv7 /home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc
Run Code Online (Sandbox Code Playgroud)

而在正确的目录中(〜/ CodeSourcery/Sourcery_G ++ _ Lite/arm-none-linux-gnueabi/libc).

我可以编译一个简单的'Hello world'(cpp),在板上编译并运行它.在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
Run Code Online (Sandbox Code Playgroud)

我下载了Mono 2.11.4的源代码并按照其中一条说明操作.第一部分(在本机上)运行良好,没有错误.但是,当我运行第二部分(为ARM编译)时./configure按预期工作但随后失败并且"../lib/mini[some_file]与arm输出不兼容".一个文件上这些文件说,他们确实是英特尔公司的80386个可执行文件,但我不知道为什么.

所以下一步是运行make clean并重复这些步骤,但它仍然会产生相同的结果.

然后我试图运行./configure并且使内SB2整个事情,而不是它似乎在第一次工作.但是随后出现了一些错误:

./.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
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法,或者我可能错过的任何关于教程的提示?

//安德斯

Omi*_*her 0

编译原生代码最好使用ScratchBox

[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
Run Code Online (Sandbox Code Playgroud)

在另一边打开一个新终端并构建托管代码。

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

$ cd mono-1.xx
$ ./configure
$ make
$ make install DESTDIR=`pwd`/tmptree
Run Code Online (Sandbox Code Playgroud)

  • 那么Scratchbox比Scratchbox2更好用吗?当我认真进行谷歌搜索时,我有一种感觉,情况正好相反(Sb2 更好)。 (2认同)