2017年8月30日水曜日

Ubuntu 16.04.3 その後の感想

前回の投稿でアップデートしてからしばらく経った感想です。

メモリ管理が改善したように感じる。
以前はChromeのタブを多く開くとハードディスクがガジガジと音をだしてかなりパフォーマンスが落ちたのですが、それが改善しているぽい気がします。

ネット接続の改善
以前はYouTubeの動画再生ですぐ最低画質に落ちていたのですが、以前よりはスムーズに再生されるようになった気がします。しかしこれはUbuntuではなくYouTube側の改善の可能性もありますので、なんとも言えません。

ちょっと挙動がおかしいケースもある
詳しくは書けませんが、挙動がおかしいと感じる事があります。やはり古いPCですのでいつカーネルに切り捨てられるのかわからない部分もあります。

2017年8月7日月曜日

Ubuntu 16.04.03

Ubuntu 16.04のポイントリリース16.04.3を適用してみました。

単純にいつものようにコマンドラインでアップデートをかけるだけでいいのですが、「Ubuntu 16.04.2」以降、ローリングLTS Enablement Stackモデルが採用されているとの事でどうせならカーネルもバージョンアップしたいと思いましたが、そのままではベースバージョンのまま何も変わりません。

調べた所、コマンドラインで以下のようにすればいいそうです。

sudo apt-get install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04

カーネルも無事更新されました。
私のマシンの場合かなり古いマシンなのでカーネルアップデートの必要性はあまりないのですが、気分的に新しい環境で使いたいなーと思って更新かけてみました。

2017年8月3日木曜日

clang 6.0.0をソースビルドしてインストール

久々に作業を行ったので記録として残しておきます。

試用環境はUbuntu16.04.2LTSです。
デフォルトのClangは3.8でした。

まずソースをリポジトリより取得します。
$ mkdir clang
$ cd clang
$ sudo apt-get build-dep -y llvm clang
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm$ cd llvm/tools
$ svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
$ cd clang/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
$ cd ../../../projects
$ svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
$ cd ../..

 ビルド用のディレクトリを作成してcmakeでMakefile作成し、ビルドします
$ mkdir llvm.build
$ cd llvm.build
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm
$ make

ビルドが私のマシンが非力なのか大体8時間15分ほど時間がかかりました。寝る前に流して朝起きるとまだビルドが75%程で仕方ないのでそのままPCをつけたまま出かけました。

さて動作確認です。

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.23' not found (required by <new software>)

あれ?どうやらライブラリがないと言われている様です。

現在のライブラリを以下のコマンドで確認すると確かに該当バージョンが含まれていません。
 $ strings /usr/lib/x86_64-linux-gnu/libstdc;;.so.6 | grep GLIBCXX

調べるとそのライブラリはgccをビルドすると含まれているそうです。
よかったこの間gcc7.1.0をビルドしたばかりで既にビルドした物が手元にあります。

$ cd gcc/build
$ find ./ -name "libstdc++*"
"./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.23"


このファイルのようです。


現在の環境のものをリネームしてこのファイルに置き換える作業をします。
 $ sudo cp ./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.23 /usr/lib/x86_64-linux-gnu/


 $ sudo cp libstdc++.so.6.0.23
 $ sudo mv libstdc++.so.6 libstdc++.so.6.bak
 $ sudo ln -s libstdc++.so.6.0.23 libstdc++.so.
 $ ls -lsta libstdc++*

権限を他のものと揃えて終わります。
 $ sudo chmod 644 libstdc++.so.6.0.23

これで一応clangが動作するようになりました。