以前、「複数バージョンの gcc, g++ を切り替える方法」に投稿した、 update-alternatives を用いて開発言語を切り替える話の続き。

まず、 gcc と clang の切り替えのための設定:

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 20

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 10

sudo update-alternatives --config cc

cc を gcc または clang に切り替える動作をする。次に gcc のバージョンの切り替えの設定で gcc のバージョンを切り替える。つまり、上の設定で gcc が選択されているとき、下の設定で選択された gcc のバージョンが実行されるという形になる。

gcc のバージョンの切り替えの設定:

sudo update-alternatives

--install /usr/bin/gcc gcc /usr/bin/gcc-8 80

--slave /usr/bin/c++ c++ /usr/bin/g++-8

--slave /usr/bin/g++ g++ /usr/bin/g++-8

--slave /usr/bin/cpp cpp /usr/bin/g++-8

--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-8

--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-8

--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-8

--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-8

--slave /usr/bin/gcov gcov /usr/bin/gcov-8

--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-8

--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-8

--slave /usr/bin/ld ld /usr/bin/x86_64-linux-gnu-ld

sudo update-alternatives

--install /usr/bin/gcc gcc /usr/bin/gcc-9 90

--slave /usr/bin/c++ c++ /usr/bin/g++-9

--slave /usr/bin/g++ g++ /usr/bin/g++-9

--slave /usr/bin/cpp cpp /usr/bin/g++-9

--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-9

--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-9

--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9

--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9

--slave /usr/bin/gcov gcov /usr/bin/gcov-9

--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-9

--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-9

--slave /usr/bin/ld ld /usr/bin/x86_64-linux-gnu-ld

sudo update-alternatives

--install /usr/bin/gcc gcc /usr/bin/gcc-10 100

--slave /usr/bin/c++ c++ /usr/bin/g++-10

--slave /usr/bin/g++ g++ /usr/bin/g++-10

--slave /usr/bin/cpp cpp /usr/bin/g++-10

--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-10

--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-10

--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-10

--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-10

--slave /usr/bin/gcov gcov /usr/bin/gcov-10

--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-10

--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-10

--slave /usr/bin/ld ld /usr/bin/x86_64-linux-gnu-ld

gcc と同様に clang のバージョンの切り替え設定もしようと思っていたが、一部のファイルのインストールに失敗し用意できていないので、今回は見送り。ちなみに、現在インストール済みの clang は version 10 のみである。

この記事のリンク元 | 54 | 19 | 9 | 8 | 3 | 2 | 1 | 1 | 1 | 1 |

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/dev/20201201_023830765384.htm

キーワード: ubuntu update-alternatives


ツールが使いづらいとかいう話ではなく、開発環境の入手が困難なのだ。

dotnet で GUI というと、ソースコードをエディタで書いて GUI アプリケーションを作ることは不可能ではないが、時代を30年ほど遡る行為だろう。既に20年は前から、このような場合は IDE を使いデザインモードも使って RAD 開発をするのが当たり前なのだから。

代わりに mono と GTK# を使う手があり、この方法での IDE としては monodevelop 一択なのだが、 ubuntu には、もうかなりの期間の間、 monodevelop のパッケージがリリースされていないため、自前でビルドする必要がある。

そこで、まず、 monodevelop の git のサイトなどを見て、下のようにすれば monodevelop のビルドができることが分かったので試した。

$ git clone https://github.com/mono/monodevelop/ --recursive

$ cd monodevelop

$ ./configure --profile=gnome

$ make

make の途中で、エラー62件で中止された。monodevelop の issue への投稿を見ると、2019年1月に、構成の冗長性を修正したというコミットがされて以降、 Linux 環境では monodevelop のビルドが通らない状態がずっと続いており、解決のめどは立っていないようだ。(どうも Linux 版はこのまま放置されそうだ。)パッケージが長期間リリースされない理由は、恐らくこのビルドが通らないことが原因だろう。

そこで、問題のコミット以前の状態まで git reset --hard コマンドでロールバックし、ビルドを通そうとしたが、 git submodule update --init --recursive を実行すると、サブモジュールとしてクローンしようとする別のプロジェクトが既に存在しないため、エラーとなり、ビルドが通らない。それだけ手動で過去のリリースからダウンロードしたとしても、ビルドの処理の一部として通らないので意味がない。

そこで、以前のリリースのソースアーカイブをダウンロードしてみたが、 make の途中で git を使う処理が入るようで、 git でクローンしたプロジェクトではないので当然エラーになってしまい、ビルドが通らない。

そこで、 wine に windows 版の monodevelop をインストールすることを考えたが、 windows 版の monodevelop はソースコードしか提供されないそうだ。

そこで、 wine に windows 版の monodevelop をビルドする環境を構築しようとしたが、それには Visual Studio 2017 のインストールが必要となることが分かった。

そこで、インストールを試みたが、 wine はインストーラを起動できず失敗することが分かった。 wine に mono がインストールされている状態では mscoree.dll を使おうとして、 mono ではだめなようで失敗するようだ。

そこで、 GUI を用いないサイレントインストールを試みたが、 GUI を用いないインストール形式でも同じエラーが出るようでだめだった。

そこで、 wine に .Net Framework をインストールしようとしたが、しばらく前の wine のバージョンから .Net Framework は動作が壊れてしまっているとのことで、 winetricks はインストールを中止してしまう。

さて、ここまであれこれ手を尽くしてあがいたが、どの方法も全て解決策が塞がれており、文字通りの八方塞がり状態だ。

他には、dotnet での GUI 開発環境として Avalonia UI や AvalonStudio もあるのだが、どちらも現状、環境が構築できない状態だ。(公式サイト通りの方法で構築しようとしても途中でエラーを起こす。)

Linux での GUI アプリケーション開発環境、どんだけ構築困難なの・・・。

この記事のリンク元 | 10 | 8 | 4 | 2 |

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/diary/20201129_210153852159.htm


作成したプロジェクトの <プロジェクト名>.csproj ファイルを開き、

TargetFramework タグの内容で指定する。

netcoreapp3.1・・・dotnet core 3.1 を指定する場合。

net5.0・・・ .Net 5.0 を指定する場合。

指定した dotnet のバージョンにより、C#の規定のバージョンも変化する。

dotnet core 3.x の場合、 C# 8.0

.Net 5.0 の場合、 C#9.0

が使用される。

例えば、 switch 文の case <条件式> に、' > 2' などのリレーショナルパターンを使用したい場合は、 C# 9.0 以降が必要になるため、このような場合は TargetFramework に net5.0 と指定してやるとよい。

この記事のリンク元 | 10 | 8 |

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/memo/20201129_024427590468.htm

キーワード: dotnet TargetFramework C#