在过去的三天里,我一直在尝试在我的 Win7 32 位机器和 CodeSourcery Sourcery G++ ARM 工具链上使用虚拟 Ubuntu(12.04)为 TechNexion Blizzard 板(运行未知版本的 Angstrom)交叉编译 Mono 2.11.4 ,但很少/没有成功。我已经按照网络上的每个教程进行操作,但它不起作用。
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"。这些文件上的一个文件说它们确实是 Intel 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
关于我做错了什么的任何想法,或者我可能错过的教程的任何提示?
//安德斯