【问题标题】:Mono Compile Stuck on mscorlibMono 编译卡在 mscorlib 上
【发布时间】:2016-06-21 01:50:58
【问题描述】:

我完全被难住了。我正在尝试使用使用 Buildroot 和 Crosstool-NG 生成的 eglibc 工具链来编译 Mono。我无法构建 3.0.3 之后的任何版本。版本 3.0.3 构建并执行得很好...更高版本在尝试编译 mscorlib 时挂起。下面列出了它挂起的输出。

使用 strace 似乎 mscorlib 的编译已成功完成,但所有剩余的作业都在等待一些永远不会完成的事情(我的 cpu% 降至 0,所以什么都没有发生)。

非常感谢任何尝试的建议。这是挂起时的 make 输出:

--- 之前的输出被忽略了

在运行时完成所有操作

make[2]: 进入目录`/home/test/dev/mono-3.0.7/runtime'

如果测试 -w /home/test/dev/mono-3.0.7/mcs;然后 :;否则 chmod -R +w /home/test/dev/mono-3.0.7/mcs;菲

cd /home/test/dev/mono-3.0.7/mcs && make --no-print-directory -s NO_DIR_CHECK=1 PROFILES='net_2_0 net_3_5'CC='i686-buildroot-linux-gnu-gcc '所有配置文件

引导编译器:Mono C# 编译器版本 2.10.8.1

MCS [build] mscorlib.dll

谢谢!

【问题讨论】:

  • 尝试make V=1 以查看更多输出;另外,您使用的是什么发行版?
  • 我在 Debian 7 上构建。我使用的是 Debian 6,并决定创建一个 Debian 7 VM,看看是否有新工具可以解决问题。感谢您的建议,我会尝试并回复。今天我尝试将 crosstool-ng 中的 eglibc 切换到 glibc(gcc 4.5.3 和 glibc 2.11),但当它尝试构建确切的东西时出现分段错误。
  • 感谢make V=1的建议。似乎以下原因导致挂起: MONO_PATH="./../../class/lib/basic:$MONO_PATH" /home/test/dev/mono-3.0.7/runtime/mono-wrapper ./ ../../class/lib/basic/basic.exe [删除]。在 3.0.3 和更早的标签中,它运行并退出。后来的转速只是挂起......即使没有参数我得到“错误CS2008:没有文件......”并且它永远不会返回到提示。有什么想法吗?
  • 这是来自 gdb 的堆栈跟踪(最后 4 行):#0 0xb7702424 in __kernel_vsyscall () #1 0xb75c6dc4 in pthread_join () from /home/test/dev/test2/host/usr/i686 -buildroot-linux-gnu/lib/libpthread.so.0 #2 0x08250806 in GC_pthread_join (thread=3009162048, retval=retval@entry=0x0) at pthread_support.c:1343 #3 0x081e27b1 in mono_gc_cleanup () at gc.c: 1218 #4 0x081d9f37 in mono_runtime_cleanup (domain=domain@entry=0x34e58) at appdomain.c:355

标签: mono cross-compiling


【解决方案1】:

感谢 knocte 的评论,我设法偶然发现了答案。我不知道为什么,但是将我的 eglibc 库更改为 2_13 可以让我的 Mono 编译成功完成。我最初使用的是 2_15。我也试过 2_14 彻底,它也因挂在同一点而失败。上面步骤中提到的步骤似乎死锁了。

总而言之,Mono 版本 3.0.3 和更早的版本使用 eglibc 2_15 buildroot 工具链编译得很好。 Mono 版本 3.0.4 及更高版本没有,但使用 eglibc 2_13 buildroot 工具链成功构建。

我不知道是 Mono、eglibc 还是两者都有问题。考虑到我浪费了多少时间,我希望这对某个地方的人有所帮助!

【讨论】:

    【解决方案2】:

    对我来说,问题是由防病毒软件 (Avast) 引起的。即使我将单声道文件夹添加到“扫描排除”列表并禁用保护盾,它仍然会继续扫描mono/mini/.libs/mono-sgen.exe。卸载防病毒软件后,构建没有挂起并成功完成。

    我并不是建议您卸载防病毒软件。我刚刚提到了对我有用的东西。仅供参考,我在构建完成后重新安装了防病毒软件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多