Build 在树莓皮3上构建Mono

Build 在树莓皮3上构建Mono,build,mono,raspberry-pi,raspbian,raspberry-pi3,Build,Mono,Raspberry Pi,Raspbian,Raspberry Pi3,我拼命想在覆盆子皮3上制作单声道。 我首先从Repo安装了Mono。然后我试着建造最新的tarball或git大师。两者都不起作用 我总是以这样的信息结束: make install-local make[7]: Entering directory '/home/pi/mono-5.9.0.415/mcs/class/corlib' CSC [basic] mscorlib.dll /home/pi/mono-5.9.0.415/mcs/class/referencesource/ms

我拼命想在覆盆子皮3上制作单声道。 我首先从Repo安装了Mono。然后我试着建造最新的tarball或git大师。两者都不起作用

我总是以这样的信息结束:

make install-local
make[7]: Entering directory '/home/pi/mono-5.9.0.415/mcs/class/corlib'
CSC     [basic] mscorlib.dll
/home/pi/mono-5.9.0.415/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs(5918,45): error CS0246: The type or namespace name 'Task<>' could not be found (are you missing a using directive or an assembly reference?)
/home/pi/mono-5.9.0.415/external/corefx/src/System.Memory/src/System/ReadOnlySpan.cs(85,42): warning CS3001: Argument type 'void*' is not CLS-compliant
/home/pi/mono-5.9.0.415/external/corefx/src/System.Memory/src/System/Span.cs(90,34): warning CS3001: Argument type 'void*' is not CLS-compliant
../../build/library.make:329: recipe for target '../../class/lib/basic/mscorlib.dll' failed
make[7]: *** [../../class/lib/basic/mscorlib.dll] Error 1
make[7]: Leaving directory '/home/pi/mono-5.9.0.415/mcs/class/corlib'
../../build/rules.make:211: recipe for target 'do-install' failed
make[6]: *** [do-install] Error 2
make[6]: Leaving directory '/home/pi/mono-5.9.0.415/mcs/class/corlib'
../build/rules.make:232: recipe for target 'install-recursive' failed
make[5]: *** [install-recursive] Error 1
make[5]: Leaving directory '/home/pi/mono-5.9.0.415/mcs/class'
build/rules.make:232: recipe for target 'install-recursive' failed
make[4]: *** [install-recursive] Error 1
make[4]: Leaving directory '/home/pi/mono-5.9.0.415/mcs'
Makefile:54: recipe for target 'profile-do--basic--install' failed
make[3]: *** [profile-do--basic--install] Error 2
make[3]: Leaving directory '/home/pi/mono-5.9.0.415/mcs'
Makefile:50: recipe for target 'profiles-do--install' failed
make[2]: *** [profiles-do--install] Error 2
make[2]: Leaving directory '/home/pi/mono-5.9.0.415/mcs'
Makefile:600: recipe for target 'install-exec' failed
make[1]: *** [install-exec] Error 2
make[1]: Leaving directory '/home/pi/mono-5.9.0.415/runtime'
Makefile:541: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1
有人有同样的问题吗?
或者一些关于如何正确构建的建议?

由于不清楚问题是否特别是关于在Raspberry Pi 3或mono上运行mono版本5.9.0.415,我将假设问题是关于mono的

根据我的经验,mono 5和armv7l平台(armv7l未知linux gnueabihf)似乎存在兼容性问题

我已尝试构建以下mono发行包:

  • 5.0.0.100
  • 5.0.1.1
  • 5.2.0.104
  • 5.2.0.224
  • 5.9.0.398
  • 5.9.0.415
编译在生成过程无法使用生成的csc二进制文件时失败。从CompileMethodBodies发出的调用中,compile部分的某个地方似乎存在NullPointerException

随着Roslyn的引入,问题首先出现在Mono 5中。好消息是mono 4.8.1版不受新的Roslyn代码的影响,在Raspberry Pi 3上编译和运行时不会出现重大问题

您可以像这样编译mono:

wget https://download.mono-project.com/sources/mono/mono-4.8.1.0.tar.bz2
tar xvf mono-4.8.1.0.tar.bz2
cd mono-4.8.1.0
./configure --prefix=/home/pi/.myMono
make
make install
此外,值得一提的是,如果您希望在Raspberry Pi 3上进行mono编译时利用所有4个CPU内核,可以通过如下方式启动make:
make-j4
。这将大大缩短编译时间

如果希望跳过libmono的生成,可以通过使用--disable libraries参数配置构建:
/configure--disable libraries--prefix=/home/pi/.myMono
。但由于您需要库来运行任何应用程序。。。这仅对mono运行时的连续重建有帮助(一旦您已经安装了monolib)

我注意到,但无法验证的是,可能有一些Mono5包的树莓皮3毕竟有。这声称有一个5.2软件包可供下载。单声道也是如此


作为旁注,我想提到的是,在/home/pi/.myMono中安装mono可能是一个糟糕的选择。但我想它应该仍然有效。。。更经典的方法是/usr/local或/opt文件夹。这里有一些想法。

因为不清楚问题是关于让mono版本5.9.0.415在Raspberry Pi 3或mono上运行,我假设问题是关于mono的

根据我的经验,mono 5和armv7l平台(armv7l未知linux gnueabihf)似乎存在兼容性问题

我已尝试构建以下mono发行包:

  • 5.0.0.100
  • 5.0.1.1
  • 5.2.0.104
  • 5.2.0.224
  • 5.9.0.398
  • 5.9.0.415
编译在生成过程无法使用生成的csc二进制文件时失败。从CompileMethodBodies发出的调用中,compile部分的某个地方似乎存在NullPointerException

随着Roslyn的引入,问题首先出现在Mono 5中。好消息是mono 4.8.1版不受新的Roslyn代码的影响,在Raspberry Pi 3上编译和运行时不会出现重大问题

您可以像这样编译mono:

wget https://download.mono-project.com/sources/mono/mono-4.8.1.0.tar.bz2
tar xvf mono-4.8.1.0.tar.bz2
cd mono-4.8.1.0
./configure --prefix=/home/pi/.myMono
make
make install
此外,值得一提的是,如果您希望在Raspberry Pi 3上进行mono编译时利用所有4个CPU内核,可以通过如下方式启动make:
make-j4
。这将大大缩短编译时间

如果希望跳过libmono的生成,可以通过使用--disable libraries参数配置构建:
/configure--disable libraries--prefix=/home/pi/.myMono
。但由于您需要库来运行任何应用程序。。。这仅对mono运行时的连续重建有帮助(一旦您已经安装了monolib)

我注意到,但无法验证的是,可能有一些Mono5包的树莓皮3毕竟有。这声称有一个5.2软件包可供下载。单声道也是如此


作为旁注,我想提到的是,在/home/pi/.myMono中安装mono可能是一个糟糕的选择。但我想它应该仍然有效。。。更经典的方法是/usr/local或/opt文件夹。这里有一些想法。

我昨晚在我的RasPi3上编译了相同的mono软件包。有趣的是,我在Task.cs上没有收到错误,但在ReadOnlySpan.cs和Span.cs上都收到了警告。我正在尝试一些事情,并会让你知道事情的进展。我从一个干净的archlinux安装开始,添加了所有的编译器和工具,但没有从repo安装mono。理论上,系统的构建可能使用回购协议中的CSC。您是否尝试过从repo卸载mono软件包?您在Pi上使用的linux发行版是什么?mono 5.2.0.224和5.9.0.398的编译在同一位置中止。这里显示了CSC的异常堆栈,看起来CompileMethodBodies对空异常感到不安。5.9.0.415具有最干净的输出,但没有给出有关问题的提示。考虑到mono 5的最大变化是Roslyn,我怀疑Roslyn还没有为32位ARM平台的黄金时间做好准备——它在mt x86_64虚拟机上编译得很好。作为一个实验,我正在RasPi3上编译Mono 4.8.1,到目前为止看起来还不错。昨晚我在我的RasPi3上编译了相同的Mono包。有趣的是,我在Task.cs上没有收到错误,但在ReadOnlySpan.cs和Span.cs上都收到了警告。我正在尝试一些事情,并会让你知道事情的进展。我从一个干净的archlinux安装开始,添加了所有的编译器和工具,但是没有