在过去的三天里,我一直在尝试使用虚拟Ubuntu(12.04)和CodeSourcery Sourcery G ++ ARM工具链在我的Win7 32位机器上为TechNexion Blizzard板(运行未知版本的Angstrom)交叉编译Mono 2.11.4,但几乎没有成功。我已经按照网上的每个教程进行了操作,但它仍然无法正常工作。
CodeSourcery Sourcery G ++ 工具链和Scratchbox2(从最新的git源编译而来)已安装并且可用。Scratchbox2是使用以下命令设置的:
我下载了Mono 2.11.4的源代码,并按照说明进行操作。在本机上完成第一部分操作时,没有出现任何错误。但是,在运行第二部分(编译ARM)时,./configure如预期工作,但是make却失败并显示"../lib/mini[some_file] is incompatible with arm output"。文件中的file表明这些文件确实是Intel 80386可执行文件,但我不知道为什么。
有没有关于我做错了什么的想法,或者有没有我可能错过的教程提示?//Anders
CodeSourcery Sourcery G ++ 工具链和Scratchbox2(从最新的git源编译而来)已安装并且可用。Scratchbox2是使用以下命令设置的:
sb2-init armv7 /home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc
当在正确的目录(~/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
我下载了Mono 2.11.4的源代码,并按照说明进行操作。在本机上完成第一部分操作时,没有出现任何错误。但是,在运行第二部分(编译ARM)时,./configure如预期工作,但是make却失败并显示"../lib/mini[some_file] is incompatible with arm output"。文件中的file表明这些文件确实是Intel 80386可执行文件,但我不知道为什么。
因此,下一步是运行make clean,然后重复步骤,但结果仍然相同。
接着我尝试在sb2内部运行整个./configure和make过程,起初似乎可以工作。但随后出现了一些错误导致构建失败:
./.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
有没有关于我做错了什么的想法,或者有没有我可能错过的教程提示?//Anders