yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

AviUtlの導入

最終更新日:2017/1/27

うーん、いくらなんでもごちゃごちゃし過ぎだな、簡略版を別途書くか・・・。

注意:現在pop.4-bit様のサイトは仮運用でもしかすると不安定です。
勝手にダウンロードリンク集 (2014.05)|rigayaの日記兼メモ帳
等も参考にしてください。

さて、動画編集といえばなんといってもAviUtlです。というわけで導入をしていきましょう。
ダウンロードって何?という人はこちら。
ダウンロードとは 【 DL 】 【 download 】 - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/E38380E382A6E383B3E383ADE383BCE38389.html

AviUtlInstaller

Maverick氏があまりに煩雑なプラグイン導入までも自動化するすごいインストーラを開発しました。

これだけで最低限必要なプラグインが全て揃います。使い方は上記動画を参考に。

Download: http://www.videohelp.com/software/AviUtlより「Download AviUtl Extra Pack 1.13 (direct link) 」をクリック

あれ、この記事いらないんじゃね・・・。今後に期待。

目次
  1. まずはインストールたほうがいいものを
  2. プラグインとかダウンロード
    1. はじめに - 自動化ツール
    2. プラグイン
    3. auo_setup.exe派・手動派のみ必要なもの
    4. 手動派のみ必要なもの
  3. いろいろ配置していく
    1. Aviutlアップデートセット派
    2. x264guiEx付属のauo_setup.exe派
    3. 手動派
  4. 設定していく
  5. 拡張 x264 出力(GUI) Exについて
  6. tune touhou問題
  7. メモ
    1. L-SMASH Worksについて
    2. なぜノイズフィルターが必要かについて
    3. H.265
    4. AviUtlをWine on Linux Mint で
    5. その他
    6. 感謝
  8. リンク集(参考リンクとかとか)

 

     まずはインストールたほうがいいものを

.NET Framework 4.0以外は基本任意。

  1. .NET Framework
    アップデートセット落としていれば不要。auo_setup.exe使うなら不要。
    大抵入ってるけど、一応確認。入ってるのかわからない人は
    http://homepage2.nifty.com/digitalcraft/help/dotnetver/
    で確認(IEじゃないとダメ)
    XP、VISTA、7の方
    Microsoft .NET Framework 4 Clinet Profile
    Microsoft .NET Framework 4 Client Profile 日本語 Language Pack
    x264guiEx 2.xxからは.NET 4以外不要。
    参考リンク:http://rigaya34589.blog135.fc2.com/blog-entry-370.html
    Microsoft .NET Framework 2.0 Service Pack 2
    Microsoft .NET Framework 2.0 Service Pack 2 (x86) 日本語 Language Pack
    Microsoft .NET Framework 4.5
    8の方→もう入ってるよ
  2. empty.exe
    MS謹製メモリー解放ソフト。AviUtlはメモリー管理があまり上手じゃないらしいので大規模な編集のお供に
    解説サイト:http://jutememo.blogspot.jp/2012/01/blog-post_10.html
  3. On2 VP6 VFW codec
    http://www.free-codecs.com/VP6_download.htm
    からダウンロードする。インストールは基本的に「NEXT」を選べば問題なし。
    後述するFLV (VP6/MP3) 出力で必要。K-Lite Codec PackのFullパックに入っていたらしい。
  4. Windows Media Video 9 VCM
    Windows Media Video 9 VCMはマイクロソフトが開発した評判の良いコーデック。
    [DL]http://www.microsoft.com/en-us/download/details.aspx?id=6191
    [日本語化バッチ]http://www.nihongoka.com/jpatch_main/wmv9vcm/
    [解説]http://www.gigafree.net/media/codec/windowsmediavideo9vcm.html
  5. Microsoftコンポーネント
    ・・・インストールする意味を見出せない。x264guiEx 2.xx に.dll付録してるから、それコピー。
  6. Ut Video Codec Suite
    可逆圧縮コーデック。AVIで中間出力するときとか使えそう。任意で
    32bit版と64bit版が有り、マルチスレッドを考慮した作りになっている
    http://umezawa.dyndns.info/wordpress/?cat=28
  7. DivX
    DivX1
    高画質・高圧縮率を実現している。h.264が出現するまで最強だった。アマレコTV使うときとか便利。任意で。
    http://www.divx.com/ja
  8. Xvid
    Xvid
    DivX」 の商用化に反発した、一部のDivX プログラマーが開発したビデオコーデックで、動画をDivX
    同等かそれ以上の品質で圧縮することができます。 任意で。
    http://www.koepi.info/xvid.html
  9. LAME
    MP3の定番コーデック。きっと要らないけど一応書いておく。インストールがちと面倒なので解説参照
    http://www.free-codecs.com/lame_acm_codec_download.htm
    [解説]http://senryaku.sengoku-jidai.com/Freesoft/AviUtl.html

     プラグインとかダウンロード

     はじめに - 自動化ツール

あまりに落とすべきものが多いので、導入をある程度自動化してくれるツールが誕生しております。

  • x264guiEx 2.xx付録のauo_setup.exe(作者:rigaya
    x264guiEx 2.xx
    最新っぽいもの(執筆時はx264guiEx_2.35v6.zip)をクリックしダウンロード。
  • Aviutlアップデートセット(作者:RRX
    http://sdrv.ms/1349Lwq
    から最新っぽいもの(執筆時はAviutl_Updateset_3.18.zip)をクリックしダウンロード。

auo_setup.exeの修正法
2014.05.16 x264guiEx インストール失敗の回避
2014/09/20くらいまでneroaacのサイトが閉鎖していて先行き不透明だったことから、auo_setup.exeではx264guiEx 2.15からqaac.exeを使うことになりました(neroも使えるけど)。

これらで落とせるのは

x264guiEx 2.xx 付録のauo_setup.exe Aviutlアップデートセット
---
AviUtl
拡張 x264 出力(GUI)Ex 拡張 x264 出力(GUI)Ex
x264.exe(x264_L-SMASH版かkomisar版落とせる方) x264.exe(komisar版)
qaac.exe neroaacenc.exe
---
MP4Box
L-SMASH(remuxer,muxer等) L-SMASH(remuxer,muxer等)
---
L-SMASH Works
---
Aviutlアップデートセット自身

となっており、アップデートセットは自動更新機能付きです。
使うも使わないもあなた次第。お好きなモノをどうぞ。

ちなみに、もしLinuxとかでwine上に入れたいときは多分アップデートセットは使えないんじゃないかなぁ。auo_setup.exeは実際に作者さんが実験してるから、x264guiEx 2.04以降なら大丈夫のハズ(なんか俺の環境だと失敗するけど。詳細は下記サイトコメント及びメモへ)
wine上のAviutl+x264guiExでエンコード
http://rigaya34589.blog135.fc2.com/blog-entry-435.html
AviUtlアップデートセット、auto_setup.exeともにレジストリには触っていません。.net4.0のインストールだけです。
http://rigaya34589.blog135.fc2.com/blog-entry-398.html#comment1943? 

     プラグイン

いいなぁと思ったものをどんどん列挙していきます。オレンジの字はとくに良さそうなもの。

いろいろ配置していく|Aviutlアップデートセット派

     auo_setup.exe派・手動派のみ必要なもの


いろいろ配置していく|x264guiEx付属のauo_setup.exe派

     手動派のみ必要なもの

いろいろ配置していく|手動派

     いろいろ配置していく

まあ、最初に決めた宗派のやり方にそって。
ライブラリとかC:\users\とかC:\Program FilesとかC:\Windowsにインストールしちゃだめなことくらいは察してね。OSの保護機能がいろいろ邪魔する(ファイルの書き換えまわり)ので。

     Aviutlアップデートセット派

  1. まずはウィルスチェックをする
  2. CubeICEとかとかお好みのソフトでAviutl_Updateset_x.xx.zipを解凍する。
  3. 「Aviutl_Updateset」→「plugins」を開きdamy.txtを読む。なんで読むか?だって面白いし。
  4. 「Aviutl_Updateset」→「Aviutl_Updateset」を開く
  5. update-setting.txtを編集する。まあお好みで。
    私はこんな感じ。
    http://simp.ly/publish/fQqvVY
  6. update.batを実行する。ちゃんと設定していればAviUtl本体も拡張編集もx264guiExも入るはず。このときdamy.txtは消滅する。
  7. CubeICEとかとかお好みのソフトで残り全部解凍する
    解凍前のはどっかにとっておくといいかもしれない。MakKi's SoftWareみたいにいきなりHP閉鎖したりするかもしれないし。
  8. 「Aviutl_Updateset」→「plugins」を新しいウィンドウで開く
  9. 先ほどダウンロードしたプラグインたちを「plugins」に移動していく。
    exedit92は全部コピー、MPEG-2 VIDEO VFAPI Plug-in のm2v.vfpをm2v.auiにリネーム、m2vconf.exe,mme.exeもコピー。fcacheはfcache1.aufだけでいいと思う。
    ほかは拡張子がauf,aui,vcmのものを「plugins」に移動。新しいウィンドウで開いたのはこの時の作業を効率化するため。
  10. exeファイルはaviutl.exeのあるフォルダーに「exe_files」とかつくってまとめておくのは激しく推奨しない。やりたいならバッチ書き換えろ。
  11. qaacを導入する場合は、QuickTimeInstaller.exeを解凍する
    7-zipやCubeICEで。ダブルクリックじゃない
  12. コマンドプロンプトを立ち上げ、次のように実行
    pushd [AppleApplicationSupport.msiのある場所]
    msiexec /passive /i AppleApplicationSupport.msi
    popd
  13. qaac_x.xx.zipの中身をAviUtl.exeと同じフォルダーとか、pluginsフォルダーが―あるときはAviUtl.exeより下のディレクトリに入れる

設定していく

     x264guiEx付属のauo_setup.exe派

  1. まずはウィルスチェックをする
  2. CubeICEとかとかお好みのソフトで全部解凍する
  3. 解凍前のはどっかにとっておくといいかもしれない。MakKi's SoftWareみたいにいきなりHP閉鎖したりするかもしれないし。
  4. ええっとx264guiEx_x.xxを開いて
    x264guiEx_readme.txt
    を読みつつ
    auo_setup.exe
    を実行。neroaacのかわりにqaacが入るようになっています。
  5. 「aviutl100」というフォルダーを新しいウィンドウで開く
  6. 「plugins」というフォルダーを作り開く
  7. 先ほどダウンロードしたプラグインたちを移動していく
    exedit92は全部コピー、MPEG-2 VIDEO VFAPI Plug-in のm2v.vfpをm2v.auiにリネーム、m2vconf.exe,mme.exeもコピー。fcacheはfcache1.aufだけでいいと思う。
    ほかは拡張子がauf,aui,vcmのものを「plugins」に移動。新しいウィンドウで開いたのはこの時の作業を効率化するため。

設定していく

     手動派

  1. まずはウィルスチェックをする
  2. CubeICEとかとかお好みのソフトで全部解凍する
  3. 解凍前のはどっかにとっておくといいかもしれない。MakKi's SoftWareみたいにいきなりHP閉鎖したりするかもしれないし。
  4. 「aviutl100」というフォルダーを新しいウィンドウで開く
  5. 「plugins」というフォルダーを作り開く
  6. x264guiEx_x.xx\auoにあるものを全て「plugins」に移動。
  7. 先ほどダウンロードしたプラグインたちを移動していく。但しAviutl_Updatesetはとりあえずシカト。
    exedit92は全部コピー、MPEG-2 VIDEO VFAPI Plug-in のm2v.vfpをm2v.auiにリネーム、m2vconf.exe,mme.exeもコピー。fcacheはfcache1.aufだけでいいと思う。
  8. ほかは拡張子がauf,aui,vcmのものを「plugins」に移動。新しいウィンドウで開いたのはこの時の作業を効率化するため。
  9. exeファイルはaviutl.exeのあるフォルダーに「exe_files」とかつくってまとめておくといいかも。
  10. qaacを導入する場合は、QuickTimeInstaller.exeを解凍する
    7-zipやCubeICEで。ダブルクリックじゃない
  11. コマンドプロンプトを立ち上げ、次のように実行
    pushd [AppleApplicationSupport.msiのある場所]
    msiexec /passive /i AppleApplicationSupport.msi
    popd
  12. qaac_x.xx.zipの中身をAviUtl.exeと同じフォルダーとか、pluginsフォルダーが―あるときはAviUtl.exeより下のディレクトリに入れる

     設定していく

  1. AviUtl起動!aviutl.exeだよ。
  2. AviUtl上部メニューバーのファイル→環境設定→システムの設定と開く。
    最大画像サイズを幅「1920」、高さ「1080」に設定する。これでフルHD対応だ。

    引用
    http://www.geocities.jp/o94_4/mp4enc.html#2
    [注意]必要以上に最大画像サイズや最大フレーム数、キャッシュフレーム数を上げすぎるとメモリ不足の大きな原因になってしまいます。
    [ヒント]初期値の320000フレームで処理できる総時間は29.97fpsの動画で約178分間までです。

  3. 上部メニューバーのファイル→環境設定→入力プラグイン優先度の設定で画像のように設定する。
    explain1
    DirectShow File Readerはなるべく下に(あくまで最終決戦兵器)、
    AVI/AVI2 File Reader、Wave File Reader、MPEG-2 VIDEO File Readerなど、動作の早そうなものはなるべく上にするのがポイント。
  4. 上部メニューバーの表示→時間の表示にチェックを入れる。
    タイトルバーに現在位置の時間が表示されるようになる。
    explain2
  5. AviUtl終了!
  6. 「plugins」フォルダー内のm2vconf.exe起動。画像みたいになってるか確認、終了。
    explain3

     拡張 x264 出力(GUI) Exについて

これにはプロファイルを作る機能がついていて、デフォルトでいくつか入っていますが、

を利用するとさらに便利かもしれません。

また
拡張 x264 出力(GUI)の設定項目とその機能について
http://nicowiki.com/拡張 x264 出力(GUI)の設定項目とその機能について.html
にまず目を通してください。

     tune touhou問題

これはx264.exeについてになりますが、--tune touhouというオプションが存在します
x264.exe --fullhelp
とするとtuneオプションが全部出てくるんですが、
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12119928032
によれば、ヘルプからはr1426の時点で削除されたみたいです。

これは開発陣数名が東方厨…(マジで)なので設けられたオプションらしいです。animationとgrainの中間のような感じだそうです。
もっぱら弾幕ゲームやReflecBeat向けです。
詳細は

魔道学研究所  東方のプレイ動画を綺麗にエンコしようforx264gui
http://es2z.blog98.fc2.com/blog-entry-53.html
x264各プロファイル毎のエンコードテスト。
http://kusurubird.blog74.fc2.com/blog-entry-111.html

を見て欲しいのですが、

--preset slow --tune touhou --psy-rd 0:0.2 --ipratio 1.65 --qcomp 0.65 --qpstep 12 --partitions all --scenecut 30 --min-keyint 60 --keyint 600 --b-adapt 2

とかしてあげるといいかもしれません。

追記
あるかないかわからないとか言いましたが、あります。アップデートセットの作者のRRX氏に感謝。

RRX氏とのメールを引用
x264ですが、 fullhelpには残念ながらチューニングの"touhou"は存在しません。が!
公式ソースコード
http://download.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20160207-2245-stable.tar.bz2を解凍して、
x264-snapshot-20160207-2245-stable\common\common.c

else if( !strncasecmp( s, "touhou", 6 ) ))//←これね。
{
    if( psy_tuning_used++ ) goto psy_failure;
    param->i_frame_reference = param->i_frame_reference > 1 ? param->i_frame_reference*2 : 1;
    param->i_deblocking_filter_alphac0 = -1;
    param->i_deblocking_filter_beta = -1;
    param->analyse.f_psy_trellis = 0.2;
    param->rc.f_aq_strength = 1.3;
    if( param->analyse.inter & X264_ANALYSE_PSUB16x16 )
        param->analyse.inter |= X264_ANALYSE_PSUB8x8;
}
else
{
    x264_log( NULL, X264_LOG_ERROR, "invalid tune '%s'\n", s );//←ここで存在しないチューニングオプションはエラーを返す。
    x264_free( tmp );
    return -1;
}
と存在し、正しく動作しているので、おそらくイースターエッグです。
*イースターエッグというのは開発者が遊び心で入れた機能および要素の事。
一般使用者には分からないように細工される。
Googleでzerg rushと検索すると出てくるものもこれの一種。

     メモ

     L-SMASH Worksについて

というものが2chDTV板AviUtlスレ住民によって作成されました。参考に。

     なぜノイズフィルターが必要かについて

魔道学研究所  投稿用動画用のフィルタ
http://es2z.blog98.fc2.com/blog-entry-35.html

     H.265

なんかx265のもあるなぁ、まもなく主流になるはず。
[公式HP(rigaya氏)]http://rigaya34589.blog135.fc2.com/
[紹介記事]開発中x265でH.265/HEVCエンコード試用

     AviUtlをWine on Linux Mint

にしてもなんでWine上でうまくいかないんだろ。
GUIはずーっとカラー計算ばっかやってるのでやむなくkill
CUI
wine auo_setup.exe -nogui -dir /home/yumetodo/wine32/drive_c/AviUtl -update-ini -update-stg
とやったらインストールは出来たものの(途中「fixme:thread:NtQueryInformationThread info class 16 not supported yet」)、実験にWMVファイルを読み込んだら読み込めず。Aviファイルを拡張編集に読み込んで出力しようとしたら

「アドレス"0x30312065"で例外"0xc0000005"が発生しました。 発生モジュール:Unknown
備考:OUTPUT_PLUGIN_TABLE::func_config()[拡張 x264出力(GUI)Ex]
正常な動作ができない可能性がありますが、処理を継続しますか?」

となり、「はい」を押してもなんらレスがなく
と言った状態。やれやれ。

環境
linuxmint-16-cinnamon 64bit 
wine 1.6.1 

     その他

アップデートセットが失敗するときはそもそもPATHにxcopy.exeがあるか確認。

ロゴを除去する編集方法

     感謝

このページはRRX氏に査読して頂いており、それなくしてはこのような惨劇が繰り広げられていたことでしょう。心より感謝申し上げます。

     リンク集(参考リンクとかとか)

Re:ある「プロ」の書いた、初心者向けc言語入門プログラム

きっかけ

ある「プロ」の書いた、初心者向けc言語入門プログラム: わき道

見てみると、コードの書き方云々の前にアルゴリズムがあかん。テーブル全数探査とか馬鹿げている。

全部書き直した

というわけで書き直した。

使用例。

気になる実装

まずアルゴリズムを変更した。

  1. 母音
  2. 子音+母音
  3. 子音+(y)+母音
  4. 子音+(y/h)+母音

この4つのテーブルに分けて、先頭文字からどのパターン化を判別し、変換するようにした。

元のプログラムではバッファーの大きさを取ってないわ、変換終了時のソースと出力の変換後の位置は取れないわでお話にならないので、strtol関数を参考に書き換えた。

内部ではC++イテレータのように作業位置のポインタと終端のポインタを持つようにした。下手にindexに変換するとsigned/unsignedが面倒だからだ。

エラー処理は、enumを書いてそれのformatterをつくるというありきたりな実装にした。その気になればstd::error_codeでのラップも簡単だろう。

VPS上のLinuxのユーザー空間にArch Linuxの環境を構築する話(2)

はじめに

まあまずは
VPS上のLinuxのユーザー空間にArch Linuxの環境を構築する話 — 173210's Blog
をみてもらうとして、これをmsys2上からやるときにどうするかという問題がある。

とりあえずそのままでは動かないので手順を書いておく。なおprootはサーバー管理者が上記記事のように入れてくれていることを前提にする。

msys2上での作業

まずこんなファイルを適当な場所に作っておく。

%echo Generating pacman keyring master key...
Key-Type: RSA
Key-Length: 2048
Key-Usage: sign
Name-Real: Pacman Keyring Master Key
Name-Email: pacman@localhost
Expire-Date: 0
%no-protection
%commit
%echo Done
EOF

次に秘密鍵を生成してサーバーに転送する。

$gpg --homedir gnupg --gen-key --batch < tmp.txt
$tar cf gnupg.tar gnupg
$scp -P 110 gnupg.tar yumetodo@kagucho.net:

VPN上での作業

まずはbootstrap用imageを落としてくる。

bootstrap用イメージはArch Linux - Downloadsからテキトーなミラーのリンクを踏めば見つかる. 試しにftp.tsukuba.wide.ad.jpに行ってみると無造作にファイルが置かれた中にarchlinux-bootstrap-2016.11.01-x86_64.tar.gzがあるのでこれを使う.
$ cd ~
$ wget http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/iso/2016.11.01/archlinux-bootstrap-2016.11.01-x86_64.tar.gz -O - | tar xz

proot上のpacman用のmirrorlistを編集する。すでに用意されているmirrorlistのうち近そうなサーバーのコメントアウト(#)を外せば良い。もちろんテキストエディタは好きなものを使えば良い。nanoの場合はCtrl+OEnterすれば保存、Ctrl+Xで終了だ。

$ nano root.x86_64/etc/pacman.d/mirrorlist

先程転送した秘密鍵を展開する。

$ tar -C root.x86_64/etc/pacman.d -xf gnupg.tar

準備が整ったのでprootでArch Linuxを開始するのだが、起動コマンドが長すぎてやってられないので、aliasを貼る。.bashrc

alias 'archlinux=proot -0 -b /etc/resolv.conf -m /dev -m /sys -m /proc -w / -r root.x86_64'

としておく。.bashrcを反映するためにsshし直すとかなんかして、

archlinux

で起動する。

proot上での作業

まずはgpgの初期化をする。

# pacman-key --init
# pacman-key --populate archlinux

さて、ここまでくればmsys2ユーザーにとっては日常だ。

# pacman -Syuu
# pacman -S base-devel git clang openmp gdb lldb

しばらく時間がかかるので放置したのち、動作確認だ。

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release

Thread model: posix
gcc version 6.2.1 20160830 (GCC)
# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release

Thread model: posix
gcc version 6.2.1 20160830 (GCC)
# clang -v
clang version 3.9.0 (tags/RELEASE_390/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Candidate multilib: .;@m64
Selected multilib: .;@m64
# clang++ -v
clang version 3.9.0 (tags/RELEASE_390/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Candidate multilib: .;@m64
Selected multilib: .;@m64
# gdb -v
GNU gdb (GDB) 7.12
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
# lldb -v
lldb version 3.9.0 ( revision )
# python --version
Python 3.5.2
# python2 --version
Python 2.7.12
# git --version
git version 2.10.2

試しにhttps://github.com/yumetodo/string_splitでもビルドしてみるか。

# cd ~
# git clone https://github.com/yumetodo/string_split.git
Cloning into 'string_split'...
remote: Counting objects: 310, done.
remote: Total 310 (delta 0), reused 0 (delta 0), pack-reused 310
Receiving objects: 100% (310/310), 50.20 KiB | 0 bytes/s, done.
Resolving deltas: 100% (174/174), done.
# cd string_split/
# git submodule update --init
Submodule 'iutest' (https://github.com/srz-zumix/iutest.git) registered for path 'iutest'
Cloning into '/home/yumetodo/string_split/iutest'...
Submodule path 'iutest': checked out '3db6d7339ad8171cb742ee90bae02fc20cca5ad4'
# make Release -j2
g++ --version
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cd test; make Release
make[1]: Entering directory '/home/yumetodo/string_split/test'
g++ --version;
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ test.cpp -o test.out -O2 -Wall -Wextra -std=c++14
mkdir -p bin/g++/Linux/Release && cp test.out bin/g++/Linux/Release/test.out
make[1]: Leaving directory '/home/yumetodo/string_split/test'
cd sample; make Release
make[1]: Entering directory '/home/yumetodo/string_split/sample'
g++ --version
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ sample.cpp -o sample.out -O2 -Wall -Wextra -std=c++11
mkdir -p bin/g++/Linux/Release && cp sample.out bin/g++/Linux/Release/sample.out
make[1]: Leaving directory '/home/yumetodo/string_split/sample'
cd benchmark; make Release
make[1]: Entering directory '/home/yumetodo/string_split/benchmark'
g++ --version
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ benchmark.cpp -o benchmark.out -O2 -Wall -Wextra -std=c++14 -Wunused
mkdir -p bin/g++/Linux/Release && cp benchmark.out bin/g++/Linux/Release/benchmark.out
make[1]: Leaving directory '/home/yumetodo/string_split/benchmark'
# cd test/
# ./test.out
[==========] Running 72 tests from 24 test cases.
[----------] Global test environment set-up.
[----------] 4 tests from ExtractLvalueBySingeCharTest
[ RUN      ] ExtractLvalueBySingeCharTest.type_char
[       OK ] ExtractLvalueBySingeCharTest.type_char (20ms)
[ RUN      ] ExtractLvalueBySingeCharTest.type_wchar_t
[       OK ] ExtractLvalueBySingeCharTest.type_wchar_t (119ms)
[ RUN      ] ExtractLvalueBySingeCharTest.type_char16_t
[       OK ] ExtractLvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] ExtractLvalueBySingeCharTest.type_char32_t
[       OK ] ExtractLvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from ExtractLvalueBySingeCharTest(141ms total)

[----------] 4 tests from ExtractLvalueByCStrTest
[ RUN      ] ExtractLvalueByCStrTest.type_char
[       OK ] ExtractLvalueByCStrTest.type_char (0ms)
[ RUN      ] ExtractLvalueByCStrTest.type_wchar_t
[       OK ] ExtractLvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractLvalueByCStrTest.type_char16_t
[       OK ] ExtractLvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] ExtractLvalueByCStrTest.type_char32_t
[       OK ] ExtractLvalueByCStrTest.type_char32_t (1ms)
[----------] 4 tests from ExtractLvalueByCStrTest(1ms total)

[----------] 4 tests from ExtractLvalueByStlStrTest
[ RUN      ] ExtractLvalueByStlStrTest.type_char
[       OK ] ExtractLvalueByStlStrTest.type_char (0ms)
[ RUN      ] ExtractLvalueByStlStrTest.type_wchar_t
[       OK ] ExtractLvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractLvalueByStlStrTest.type_char16_t
[       OK ] ExtractLvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] ExtractLvalueByStlStrTest.type_char32_t
[       OK ] ExtractLvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from ExtractLvalueByStlStrTest(0ms total)

[----------] 4 tests from SplitLvalueBySingeCharTest
[ RUN      ] SplitLvalueBySingeCharTest.type_char
[       OK ] SplitLvalueBySingeCharTest.type_char (0ms)
[ RUN      ] SplitLvalueBySingeCharTest.type_wchar_t
[       OK ] SplitLvalueBySingeCharTest.type_wchar_t (0ms)
[ RUN      ] SplitLvalueBySingeCharTest.type_char16_t
[       OK ] SplitLvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] SplitLvalueBySingeCharTest.type_char32_t
[       OK ] SplitLvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from SplitLvalueBySingeCharTest(0ms total)

[----------] 4 tests from SplitLvalueByCStrTest
[ RUN      ] SplitLvalueByCStrTest.type_char
[       OK ] SplitLvalueByCStrTest.type_char (0ms)
[ RUN      ] SplitLvalueByCStrTest.type_wchar_t
[       OK ] SplitLvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] SplitLvalueByCStrTest.type_char16_t
[       OK ] SplitLvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] SplitLvalueByCStrTest.type_char32_t
[       OK ] SplitLvalueByCStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitLvalueByCStrTest(0ms total)

[----------] 4 tests from SplitLvalueByStlStrTest
[ RUN      ] SplitLvalueByStlStrTest.type_char
[       OK ] SplitLvalueByStlStrTest.type_char (1ms)
[ RUN      ] SplitLvalueByStlStrTest.type_wchar_t
[       OK ] SplitLvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] SplitLvalueByStlStrTest.type_char16_t
[       OK ] SplitLvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] SplitLvalueByStlStrTest.type_char32_t
[       OK ] SplitLvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitLvalueByStlStrTest(1ms total)

[----------] 2 tests from SplitLvalueCovertToIntBySingeCharTest
[ RUN      ] SplitLvalueCovertToIntBySingeCharTest.type_char
[       OK ] SplitLvalueCovertToIntBySingeCharTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntBySingeCharTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntBySingeCharTest.type_wchar_t (14ms)
[----------] 2 tests from SplitLvalueCovertToIntBySingeCharTest(14ms total)

[----------] 2 tests from SplitLvalueCovertToIntByCStrTest
[ RUN      ] SplitLvalueCovertToIntByCStrTest.type_char
[       OK ] SplitLvalueCovertToIntByCStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntByCStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntByCStrTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntByStlStrTest
[ RUN      ] SplitLvalueCovertToIntByStlStrTest.type_char
[       OK ] SplitLvalueCovertToIntByStlStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntByStlStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntByStlStrTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntNoReturnBySingeCharTest
[ RUN      ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_char
[       OK ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntNoReturnBySingeCharTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntNoReturnByCStrTest
[ RUN      ] SplitLvalueCovertToIntNoReturnByCStrTest.type_char
[       OK ] SplitLvalueCovertToIntNoReturnByCStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntNoReturnByCStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntNoReturnByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntNoReturnByCStrTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntNoReturnByStlStrTest
[ RUN      ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_char
[       OK ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntNoReturnByStlStrTest(0ms total)

[----------] 4 tests from ExtractRvalueBySingeCharTest
[ RUN      ] ExtractRvalueBySingeCharTest.type_char
[       OK ] ExtractRvalueBySingeCharTest.type_char (0ms)
[ RUN      ] ExtractRvalueBySingeCharTest.type_wchar_t
[       OK ] ExtractRvalueBySingeCharTest.type_wchar_t (0ms)
[ RUN      ] ExtractRvalueBySingeCharTest.type_char16_t
[       OK ] ExtractRvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] ExtractRvalueBySingeCharTest.type_char32_t
[       OK ] ExtractRvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from ExtractRvalueBySingeCharTest(0ms total)

[----------] 4 tests from ExtractRvalueByCStrTest
[ RUN      ] ExtractRvalueByCStrTest.type_char
[       OK ] ExtractRvalueByCStrTest.type_char (0ms)
[ RUN      ] ExtractRvalueByCStrTest.type_wchar_t
[       OK ] ExtractRvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractRvalueByCStrTest.type_char16_t
[       OK ] ExtractRvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] ExtractRvalueByCStrTest.type_char32_t
[       OK ] ExtractRvalueByCStrTest.type_char32_t (0ms)
[----------] 4 tests from ExtractRvalueByCStrTest(1ms total)

[----------] 4 tests from ExtractRvalueByStlStrTest
[ RUN      ] ExtractRvalueByStlStrTest.type_char
[       OK ] ExtractRvalueByStlStrTest.type_char (0ms)
[ RUN      ] ExtractRvalueByStlStrTest.type_wchar_t
[       OK ] ExtractRvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractRvalueByStlStrTest.type_char16_t
[       OK ] ExtractRvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] ExtractRvalueByStlStrTest.type_char32_t
[       OK ] ExtractRvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from ExtractRvalueByStlStrTest(0ms total)

[----------] 4 tests from SplitRvalueBySingeCharTest
[ RUN      ] SplitRvalueBySingeCharTest.type_char
[       OK ] SplitRvalueBySingeCharTest.type_char (0ms)
[ RUN      ] SplitRvalueBySingeCharTest.type_wchar_t
[       OK ] SplitRvalueBySingeCharTest.type_wchar_t (0ms)
[ RUN      ] SplitRvalueBySingeCharTest.type_char16_t
[       OK ] SplitRvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] SplitRvalueBySingeCharTest.type_char32_t
[       OK ] SplitRvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from SplitRvalueBySingeCharTest(0ms total)

[----------] 4 tests from SplitRvalueByCStrTest
[ RUN      ] SplitRvalueByCStrTest.type_char
[       OK ] SplitRvalueByCStrTest.type_char (0ms)
[ RUN      ] SplitRvalueByCStrTest.type_wchar_t
[       OK ] SplitRvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] SplitRvalueByCStrTest.type_char16_t
[       OK ] SplitRvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] SplitRvalueByCStrTest.type_char32_t
[       OK ] SplitRvalueByCStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitRvalueByCStrTest(0ms total)

[----------] 4 tests from SplitRvalueByStlStrTest
[ RUN      ] SplitRvalueByStlStrTest.type_char
[       OK ] SplitRvalueByStlStrTest.type_char (0ms)
[ RUN      ] SplitRvalueByStlStrTest.type_wchar_t
[       OK ] SplitRvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] SplitRvalueByStlStrTest.type_char16_t
[       OK ] SplitRvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] SplitRvalueByStlStrTest.type_char32_t
[       OK ] SplitRvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitRvalueByStlStrTest(1ms total)

[----------] 2 tests from SplitRvalueCovertToIntBySingeCharTest
[ RUN      ] SplitRvalueCovertToIntBySingeCharTest.type_char
[       OK ] SplitRvalueCovertToIntBySingeCharTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntBySingeCharTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntBySingeCharTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntBySingeCharTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntByCStrTest
[ RUN      ] SplitRvalueCovertToIntByCStrTest.type_char
[       OK ] SplitRvalueCovertToIntByCStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntByCStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntByCStrTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntByStlStrTest
[ RUN      ] SplitRvalueCovertToIntByStlStrTest.type_char
[       OK ] SplitRvalueCovertToIntByStlStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntByStlStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntByStlStrTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntNoReturnBySingeCharTest
[ RUN      ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_char
[       OK ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntNoReturnBySingeCharTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntNoReturnByCStrTest
[ RUN      ] SplitRvalueCovertToIntNoReturnByCStrTest.type_char
[       OK ] SplitRvalueCovertToIntNoReturnByCStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntNoReturnByCStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntNoReturnByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntNoReturnByCStrTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntNoReturnByStlStrTest
[ RUN      ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_char
[       OK ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntNoReturnByStlStrTest(0ms total)

[----------] Global test environment tear-down.
[==========] 72 tests from 24 testcase ran. (159ms total)
[  PASSED  ] 72 tests.

いいね。

余談

どういうわけかどこの.bashrcも読み込んでくれないようなのので、root.x86_64/etc/bash.bashrc

source "${HOME}/.bashrc"

を追加するといいかもしれない。msys2で使っていたものがほぼそのまま使える。例えば

export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[m\]\[\e[36m\]\w\[\e[m\]\[\e[0m\]\n$'

とか書いて置くと見た目がきれいでいい。