2017-11-27 20 views
0

ラズベリーパイ3でモノを構築するために必死にします。 レポから最初にモノをインストールしました。そして、私は最新のtarballまたはgit masterを構築しようとしました。どちらもうまくいかなかった。ラズベリーパイ3でモノを構築する

私はいつも、このメッセージで終わる

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 

これは私がtarアーカイブのビルドに使用するスクリプトです:

PREFIX=/home/pi/.myMono 
VERSION=5.9.0.415 
tar xvf mono-$VERSION.tar.bz2 
cd mono-$VERSION 
./configure --prefix=$PREFIX 
make 
make install 

誰もが同じ問題を持っていますか? または正しくビルドする方法を教えてください。

+0

私は昨夜私のRasPi3で同じモノラルパッケージをコンパイルしていました。興味深いのは、Task.csでエラーが発生しないことですが、私はReadOnlySpan.csとSpan.csで両方の警告を受け取ります。私はいくつかのことを試しており、状況がどのように進歩しているかを伝えます。私はarchlinuxのクリーンインストールを開始し、すべてのコンパイラとツールを追加しましたが、リポジトリからモノをインストールしませんでした。理論的には、システム上のビルドはレポからのCSCを使用している可能性があります。レポからモノパッケージをアンインストールしようとしましたか?どのLinuxディストリビューションをPiで使用していますか? – omahena

+0

mono 5.2.0.224および5.9.0.398のコンパイルは、同じ場所で停止します。ここではCSCの例外スタックが表示され、CompileMethodBodiesがnull例外を越えて動揺するように見えます。 5.9.0.415は最もクリーンな出力を示しますが、問題のヒントは得られません。モノ5の大きな変化がRoslynだったことを考えると、私はRoslynが32ビットARMプラットフォームでプライムタイムの準備が整っていないと思う。それはx86_64の仮想マシンでうまくコンパイルされた。実験として、私はRasPi 3でMono 4.8.1をコンパイルしていますが、これまでのところよく見ています。 – omahena

答えて

2

ラズベリーパイ3またはモノラルで一般的に実行されるモノバージョン5.9.0.415を取得することに関する質問が一般的であるかどうかは不明なので、一般的にはモノに関する質問であると推測します。

私の経験から、mono 5とarmv7lプラットフォーム(armv7l-unknown-linux-gnueabihf)との互換性の問題があるようです。

私は、次のモノのリリースパッケージをビルドしようとしています

  • 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からの呼び出しのどこかでコンパイルセクションにNullPointerExceptionがあるようです。

この問題は、Roslynの導入でMono 5に最初に現れます。さらに

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 

:良いニュースは、モノのリリース4.8.1を新しいロザリンコードに影響されないとラズベリーパイに大きな問題もなく3

をコンパイルして実行することをあなたはこのように、モノをコンパイルすることができていますラズベリーパイ3のモノラルコンパイル時に4つのCPUコアをすべて利用したい場合は、make -j4のようにmakeを実行することで可能です。コンパイル時間が大幅に短縮されます。

そして、libmonoの生成をスキップしたい場合は、--disable-librariesパラメータ:./configure --disable-libraries --prefix=/home/pi/.myMonoを使用してビルドを構成します。しかし、アプリケーションを実行するにはライブラリが必要です...これは、Monolibを連続して再構築する場合にのみ役立ちます(一度モノリブをインストールしてしまえば)。

私が気づいたのは確認できませんでしたが、ラズベリーパイ3のモノラルパッケージがいくつか存在する可能性があります。このpostは、ダウンロード可能な5.2パッケージがあると主張しています。モノはdownload pageと同じです。

私は/home/pi/.myMonoにmonoをインストールすることは悪い選択かもしれないと言いたいと思います。しかし、私はそれがまだ動作するはずだ...より古典的なアプローチは、/ usr/localまたは/ optフォルダです。これらのいくつかの考えはここにalternate locationsです。

+0

問題は、ラズベリーパイ3で最新のモノマスターが必要なことです。 このバグ修正のため、最新のものが必要です:https://github.com/mono/mono/pull/5842 ラズベリーはハードウェアですこのプロジェクトに使用する 場所に関するヒントをありがとう。私はそれを変えます。 編集: PS:自分のPIにRaspianを使用しました – Richy1989

+0

あなたの問題があります。おそらく、最新のモノラル・ランタイムを、別のプラットフォームでコンパイルした新しいリビジョンのモノリブで使用することは可能でしょう。 WCFはmonolibの一部でなければなりません。彼らは理論的には互換性があるはずです...私たちのプロジェクトの1つで使用しなければならなかったもう一つの選択肢は、非同期ソケットが壊れていたため、モノの通信コードの特別なバージョンを書くことでした。あなたのケースでは、WCFを置き換えるのがずっと難しくなるかもしれません。マージされたランタイムとモノリブで試してみます。 – omahena

関連する問題