.NET CoreをCent OS 7(Linux全般?)で動かした時の備忘録
先日、会社の勉強会で.NET Core等について話しました。
その時の事象についてちょっと覚書を書いておこうと思います。
まず前提として、.NET Coreはクロスプラットフォームなので、Windows以外にもLinuxやMacでも動きます。
また、コンパイルの仕方によっては.NET Coreランタイムをインストールしなくても実行できるようになります。
せっかくの勉強会だったのでWindowsだけじゃなくてせめてLinuxで動かした例も出したいなあってことでCent OS 7で動かそうとした時に事象は発生しました。
「.NET Coreランタイムが不要 = 環境構築が不要」ではない?
ソース自体は「Hello World」を出すだけのプログラムでした。
.csprojファイルは以下のような内容です。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> <RuntimeIdentifiers>win7-x64;centos.7-x64</RuntimeIdentifiers> </PropertyGroup> </Project>
Windows 7 64bitとCent OS 7 64bit向けの2パターン実行ファイルを生成できる設定です。
Windows 7では問題なく実行できました(ついでに試したところ、Windows Server 2012でも実行できました)。
ただ、Cent OS 7では実行時にエラーとなってしまいました。
正確なエラーメッセージは忘れましたが、「libunwindをインストールしろ」というメッセージでした。
libunwindをインストールしたところ、実行することができました。
そのため、.NET CoreをCent OS(Linux全般?)で動かすにはランタイムが不要でもlibunwindが必要になってくるようです。
libunwindはデバッグ情報を表示するため?のライブラリっぽいので必要になるかはOSの設定によるのかもしれません(私はLinuxに詳しくないので不明。そもそもこの実行環境も同僚に手伝ってもらった環境だし)。
会社のPCで作ったり実行したりしたので実行時のキャプチャはありませんが、自宅PCでも環境作ったらキャプチャ取ってのせたいところです。