单声道构建cygwin有错误,怎么做构建?

时间:2018-01-22 05:10:26

标签: mono

我按照(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

3 个答案:

答案 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调试器可以工作。