NF

地方で働くプログラマ

10回目:sold

10回目です。今週末に13回目の計算になるので、4つ書かないと。
 
www.youtube.com
Kernel/VM探検隊をたまたま見たので、気になったのをピックアップします。


今回は上の動画の最初の「sold: A linker for shared objects」を見てみる。
動的リンクされたバイナリに共有ライブラリを後から静的リンクし直す?というもの。
(元々作ってた方が有名のshinhさんで、発表者の方もPFNの人のらしい)
 

# sold -i nvim -o nvim.soltout

コマンドはこれだけ。
例だとnvimがlibnsl.so.3に依存してるので、これを勝手に探してくっ付けてくれると思えばいいのかな。サーバAとBがあって前者にしかlibnsl.so.3がサーバAにしか無い時、サーバAでnvim.soltoutを作ってサーバBに持っていけば動くってことか。
 
質問でライブラリ毎持っていけばいいんじゃ?→社内の事情で不可、ってやり取りがありましたが、確かにライブラリ置くのにハードルがあるケースは実際あったので、覚えておくと有効化も。
 
仕組みの説明は正直あまり理解してない。R_X86_64_64とかはググると色々出てきますね。
c - What do R_X86_64_32S and R_X86_64_64 relocation mean? - Stack Overflow
記事と関係ないですが、記事内にリンカ動作の詳しい説明へのリンクがあるんだけど、これ回答してるCiroさん?って人が凄いこうアレな名前とアイコンでちょっと面白い。
 
リポジトリはこれですね。ちょっと会社で触ってみます。
GitHub - akawashiro/sold
GitHub - shinh/sold (多分移行前の)


おわり