我按照(http://www.mono-project.com/docs/compiling-mono/windows/)
的说明进行操作PATH=$PREFIX/bin:$PATH
git clone https://github.com/mono/mono.git
cd mono
do shell cmd ./autogen.sh --prefix=$PREFIX --host=x86_64-w64-mingw32 --disable-boehm
Git submodules updated successfully
mcs source: mcs
C# Compiler: roslyn
Engine:
Host: x86_64-w64-mingw32
Target: x86_64-w64-mingw32
GC: sgen (concurrent by default)
TLS: pthread
SIGALT STACK: no
Engine: Building and using the JIT
BigArrays: no
DTrace: no
LLVM Back End: no (dynamically loaded: no)
Libraries:
.NET 4.x: yes
Xamarin.Android: no
Xamarin.iOS: no
Xamarin.WatchOS: no
Xamarin.TVOS: no
Xamarin.Mac: no
Windows AOT: no
Orbis: no
Unreal: no
WebAssembly: no
Test profiles: AOT Full (no), AOT Hybrid (no)
JNI support: no
libgdiplus: assumed to be installed
zlib:
BTLS: no
jemalloc: no (always use: no)
现在输入`make'编译 做,然后低于错误
C:/cygwin64/home/Administrator/mono/mono/mini/mono-sgen.exe:
error while loading shared libraries: ?: cannot open shared object file: No such file or directory
make[8]: *** [il.make:4:../../../class/lib/basic/corlib.unsafe.dll.tmp] 错误 127
make[7]: *** [../../../build/rules.make:211:do-all] 错误 2
make[6]: *** [../build/rules.make:232:all-recursive] 错误 1
make[5]: *** [build/rules.make:232:all-recursive] 错误 1
make[4]: *** [Makefile:54:profile-do--basic--all] 错误 2
make[3]: *** [Makefile:50:profiles-do--all] 错误 2
make[2]: *** [Makefile:613:all-local] 错误 2
make[2]: 离开目录“/home/Administrator/mono/runtime”
make[1]: *** [Makefile:558:all-recursive] 错误 1
make[1]: 离开目录“/home/Administrator/mono”
make: *** [Makefile:488:all] 错误 2
答案 0 :(得分:1)
我已经两次打过这个,但是......实际上你不应该跑那个东西。您使用msbuild构建mono.exe并运行make来构建BCL。
您遇到的问题是,按照说明,您已经从cygwin主机交叉构建了一个mingw mono.exe。我知道,它们看起来是一样的,但它们并不完全相同。 mingw mono.exe无法在cygwin环境中运行,因为它找不到libgcc_s.dll左右,也许还有其他人。
如果你是dir / s / b C:\ cygwin64 \ libgcc * .dll并注意到mingw sysroot,你可以将该目录添加到%PATH%,然后这个mingw mono.exe就可以了。但是,正确的解决方案可能是一个正确的mingw安装,而不是使用sysroot,再次,这个mono.exe不是目标。
一旦你使用msbuild,你得到原生的Visual C ++,它的符号,它的调试器或windbg,在我这里是Windows的巨大价值之一 - 调试器 - cygwin和mingw不给你。
答案 1 :(得分:0)
尝试直接执行C:/cygwin64/home/Administrator/mono/mono/mini/mono-sgen.exe - 它应该抱怨它错过了一些cygwin文件 - 将它们复制到此文件夹
答案 2 :(得分:0)
它没有用,因为mingw .dll不在$ PATH中。 你已经从Cygwin环境中交叉构建了一个mingw mono。
我强烈建议您使用msbuild而不是msvc / * .sln文件,使用Visual C ++而不是mingw来构建,从而Visual Studio和windbg调试器可以工作。