OpenBSD で GCC が廃止・Clang/LLVM に移行

タイトルの通り、とうとう OpenBSD 6.6 で、GCC が廃止・LLVM/Clang に移行になったようです。

OpenBSD 6.6登場、GCCの廃止とLLVM Clangへの移行進む

はっきりいって地味なネタ。実際、普通にパソコン使っている限りにおいては、何の影響もでないでしょう。

ちょっと関係するとすれば、Mac ユーザー(の中でも開発よりの人)。

ご存知のように OS X (MacOS)は、BSD(というUnix OS)の上に Cocoa というレイヤーを被せたかっこうになっている。
もともとアップルは Clang/LLVM 推しで、Objective-C(++) においては、.m と .mm (++ では拡張子はこちら) コードを Clang →LLVM という流れでビルドする。
なお、Objective-C(++) は C(++) の上位互換とされており、通常の C(++) の文法でコードを書いてもコンパイルはできる。
だから、実務的には、ソースが C(++) だったとしても拡張子を m や mm にしておいた方がいい

Clang がフロントエンドでソースコードの解析を担当し、LLVM(元は Low Level Virtual Machine の略。今は何の略でもないとされていいる)がバックエンドとなり、最終的な機械語コードを吐き出す。
また、LLVM は Virtual Machine から連想されるように Java と同様、特定のマシンから独立した中間コードをまず生成し、次にそれを各々のマシン向けの機械語に変換するという仕組みになっている。

話が逸れた。

世界が Mac だけで完結しているのなら Clnag/LLVM でもいいのだが、デスクトップPCのシェアは MS Windows の方が上で、Windows 向けに書かれた C++プログラムを Mac 上で動かしたいということはよくある。そのような場合、困ったことがおこることがある。
GCC や Windows C コンパイラにはある機能が、実際には Clang/LLVM にないことが度々あるからだ。
そのような場合は、GNU の GCC の使用を余儀なくされるわけだが、今後はその点でさらに使いにくくなるかもってことです。

【参考】Mac で技巧2を使う

air-h-128k-il

windows10 で GCC

windows 環境で GCC を使うとすると、MinGW が有名だが、現時点で、公式には gcc  6.3くらいまでしか対応してない。

もうちょっと最新版が使えないか調べたら、MinGW Distro というのを見つけた。version は驚きの 7.1 。

すぐに使うことはないだろうが、紛れないように記録。

 

 

カッコーはウェブに卵を産むか

将棋ソフトが整ってくると次に欲しくなるのが棋譜だ。

連盟の将棋中継アプリの通信内容からなんとか kif 形式に落とすことはできないか考えてみましたが、がっつり ssl かかってました。

ところで、ssl の筋に入っていく前にアプリはhttp://kak.o.oo7.jp/ShogiLive/ann/iphone.txt というところに GET リクエストを送っている。 “カッコーはウェブに卵を産むか” の続きを読む

Mac で技巧2を使う

また将棋ネタ。
メインで使っている XPS 13 の調子が悪く、ここのところ移動時には MacBook を携えている。困るのは将棋ソフトが充実していない点。

なので elmo (というか YaneuraOu)や技巧2をソースからコンパイルしてみた。

基本的なやり方は、ここここといっしょ。

技巧2の方は、Mac オリジナルの gcc でコンパイルできないので(OpenMP とやらでひっかるみたい)、GCC の gcc49 で置きかえてコンパイル。導入には homebrew より macports の方が簡単のようで、私はそうしました。

 

【Tips!】

$ port search gcc

でインストールできるパッケージを確認。

$ sudo port install gcc49

でインストール。

$  port contents gcc | grep /bin/

でパッケージの実体の path を調べる。私の場合は /opt/local/bin 以下にありました。

$ which gcc

でオリジナルの gcc g++ の path を確認して(私の場合は /usr/bin )

$ sudo ln -sf /opt/local/bin/gcc-mp-4.9 /usr/bin/gcc

$ sudo ln -sf /opt/local/bin/g++-mp-4.9 /usr/bin/g++

で、リンクをはる(※)、という手順。要するに Mac がコンパイルするとき、/usr/bin 以下の gcc を使うので、リンク貼ってそこから gcc-mp-4.9 に飛ばすという理屈。

 

エンジンができたら、将棋ブラウザQ などに登録。無事 Mac 環境下でも強豪将棋ソフトが使えました。

実際の elmo VS 技巧2のバトルは YouTube で。

※‥‥直リンなのでターミナル上で誤操作をするとオリジナルの gcc/g++ が消える可能性もあります。操作は自己責任でお願いします。なお、Mac に不慣れな私もこれをやってしまいましたが、OS X のマイナーアップデートで修復されます。こういうのが嫌な場合は、おとなしく makefile を編集しましょう(コメント欄参照。こっちの方が簡便か)。

? 関連して新しい記事があります。

MacOS に elmo + やねうら王 + 将棋ぶらうざQ を「clang」で導入