サッカー
浦和レッズの優勝をみていた。ジュビロってこんな下手なのしかいなかったっけ?
crenv
yakketyでcrenv install 0.19.4を叩くとエラーが。
( ՞ਊ ՞) :~ $ lsb_release -sc yakkety ( ՞ਊ ՞) :~ $ cat /proc/version Linux version 4.8.0-26-generic (buildd@lgw01-58) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #28-Ubuntu SMP Tue Oct 18 14:39:52 UTC 2016 ( ՞ਊ ՞) :~ $ LANG=C crenv install 0.19.4 Resolving Crystal download URL by Remote Cache ... ok Downloading Crystal binary tarball ... https://github.com/crystal-lang/crystal/releases/download/0.19.4/crystal-0.19.4-1-linux-x86_64.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 611 0 611 0 0 568 0 --:--:-- 0:00:01 --:--:-- 568 100 16.1M 100 16.1M 0 0 670k 0 0:00:24 0:00:24 --:--:-- 1248k ok Moving the Crystal directory ...ok Checking if Shards already exists ... ng Resolving Shards download URL ... ok Downloading Shards tarball ... https://github.com/crystal-lang/shards/archive/master.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 127 0 127 0 0 119 0 --:--:-- 0:00:01 --:--:-- 119 100 27519 100 27519 0 0 11741 0 0:00:02 0:00:02 --:--:-- 68285 ok Building Shards ... /usr/bin/ld: /home/kubo39/.anyenv/envs/crenv/versions/0.19.4/embedded/lib/../lib/libyaml.a(api.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: /home/kubo39/.anyenv/envs/crenv/versions/0.19.4/embedded/lib/../lib/libyaml.a(parser.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: /home/kubo39/.anyenv/envs/crenv/versions/0.19.4/embedded/lib/../lib/libyaml.a(scanner.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: /home/kubo39/.anyenv/envs/crenv/versions/0.19.4/embedded/lib/../lib/libyaml.a(reader.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: error: ld returned 1 exit status Error: execution of command failed with code: 1: `cc -o "/home/kubo39/.anyenv/envs/crenv/cache/0.19.4/shards-master/bin/shards" "${@}" -rdynamic -lyaml -lpcre -lgc -lpthread /home/kubo39/.anyenv/envs/crenv/versions/0.19.4/src/ext/libcrystal.a -levent -lrt -ldl -L/usr/lib -L/usr/local/lib` shards build faild: /home/kubo39/.anyenv/envs/crenv/cache/0.19.4/shards-master at /home/kubo39/.anyenv/envs/crenv/plugins/crystal-build/bin/../lib/CrystalBuild/Builder/Shards.pm line 19, <DATA> line 1.
理由としてはgcc herdened https://wiki.ubuntu.com/SecurityTeam/PIE でリンク時に-pieがデフォルトonになったのが原因でcrystalのtarに同梱されてるlibyaml.aとかとリンクしようとして落ちるって感じ。
とりあえずcrystal-buildの中いじって --link-flags -no-pie
をshardsのビルド時に与えて迂回してるけどこれよくない方法だよなあ…ってかんじだしどうするかね。
対応策とPros/Cons
ほんとはぜんぜん検討違いなことを言ってるかもしれない。
- <= 0.19.4 では
-link-flags -no-pie
でビルド
静的ライブラリリンクは環境を意識しなくていいので楽だよね、という。gccのバージョンによっては -no-pie
オプションがなかったりというのがあって厳しいかも。調べた感じGCCでは4.9以降で入ったらしく、たとえばCentOS7.xではgcc 4.8なのでだめ。
- なんとか*.soとリンクする
実は動的リンクライブラリも同梱されているのだ、こちらは-fPICなビルドなのでリンクエラーにはならない。んじゃないかな多分。パスとか環境を意識する必要があるので利便性が下がるか。
- tarballを差し替えてもらう…?
tarballに含まれるlib*.aがfPICつきでビルドされていないからおきるのでそれをなんとかする。
アニメ
昨日のWIXOSSをみました。ひたすら厳しい…救いはあるのか。
ブブキ・ブランキをみました。黄金ちゃんの出番はあまりなかったようにおもいます。
ろんぐらいだぁす!をみました。脚アニメですね。獣姦アニメでもありました。よい。
オカルティックナインをみました。よくわかりません。
終末のイゼッタをみました。イゼッタちゃんかわいいのでちゃんとハッピーエンドになってほしいですが。。