为 ARM 交叉编译 Mono

5

有人在Linux下使用distcc或一些交叉编译工具链成功地将mono交叉编译到ARM上吗?

(而不使用scratchbox或qemu)

2个回答

4
我使用安装了CodeSourcery Lite工具链的Ubuntu机器,在Scratchbox 2上成功地交叉编译了mono(2.0、2.4、2.6、2.8、2.10.1)。我参考了Mono项目页面上的文章。Mono项目页面提供了详细的步骤。
首先在本机上进行编译。
./configure
$ make
$ make install DESTDIR=path

然后在sb2中:
[sbox-ARMEL: ~] > ./configure --disable-mcs-build
[sbox-ARMEL: ~] > make 
[sbox-ARMEL: ~] > make install DESTDIR=path

我使用这个来进行配置。
./configure --enable-minimal=profiler,debug,logging,soft_debug --with-tls=--with-tls=__thread --with-monotouch=no --without-mcs-docs --disable-mono-debugger CFLAGS=-DARM_FPU_NONE --disable-mcs-build

1
嗯,我尝试了"./configure --disable-mcs-build",但是出现了很多未定义的引用,明天我会测试你的配置。 - Gobliins
你在sbox环境中使用哪个工具链?你的DESTDIR在两个环境中是否相同,还是在构建后合并? - Gobliins
1
抱歉回复晚了。是的,destdir是相同的。(注意:我更改了工具链,使用了crosstool-ng) - retek4
禁用MCS对我也不起作用。它似乎在测试程序步骤上失败了。 - jocull
当您在本机上编译Mono时,不应使用--disable-mcs-build。安装后运行clean并使用sb2中的禁用mcs重新运行configure。 - retek4
你们有没有什么帮助、手册、教程,能够提供一步一步的过程来完成所有这些工作?我目前正在尝试做同样的事情,但在这里看到的所有东西都是经验丰富的人的笔记,不适合一个新手来做这个。 - Richard B

2

昨晚我尝试了很多次使用scratchbox2.. 遇到了一些问题.. 最终只能在arm上编译,顺利完成!只用了30分钟!

CFLAGS=-DARM_FPU_VFP_HARD HardFloat
CFLAGS=-DARM_FPU_VFP_NONE SoftFloat

在PC上编译Mono

sudo make install `directory like /tmptree etc`

将所有这些文件从 /tmptree 移动到您的 ARM 设备上的 / etc 目录中。

./autogen.sh --disable-mcs-build
make CFLAGS=-DARM_FPU_VFP_HARD
sudo make install
sudo ldconfig

Mono硬浮点补丁

尝试使用mono 3.0.3实现硬浮点,但它表示暂不支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接