objdump しようとしたらcommand not found と言われた
nm はあるのに何故・・・
ということで、いつも通り MacPorts で入れようとした
$ port search objdump No match for objdump found
な、なんだってー!
調べてみたところ、binutils に含まれているらしい。
なるほどと思う反面、こういうのも search で検索できてもいいかなと思ったり。
svn で検索しても subversion がひっかからない、なんてこともあったし。
まぁ愚痴はともかく、binutils をインストール。
$ sudo port install binutils $ port contents binutils | grep objdump /opt/local/bin/gobjdump /opt/local/i386-apple-darwin9.3.0/bin/objdump /opt/local/share/man/man1/gobjdump.1.gz
ん、ちゃんと入ってる。
g がプレフィックスになってる。もとから入っているものと名前が衝突しないようにだろうか。
binutils に入ってる他のプログラム (objcopy, nm, ar, ranlib など) や、coreutils に含まれてるプログラムにも g というプレフィックスがついてるし。
ちなみに、/opt/local/bin/gobjdump と /opt/local/i386-apple-darwin9.3.0/bin/objdump は全く同一のものでした。
で、objdump を使ってみたんですが、文字化けしてる・・・
$ gobjdump --help | nkf --guess EUC-JP (LF)
coreutils はちゃんと UTF-8 で話してくれるのに、binutils はどれも EUC-JP で話す模様。
/opt/local/share/locale/ja/LC_MESSAGE/binutils.mo が原因か。直せたらまた書こう。
追記。案外簡単に直せた。
gettext-tools なんて使ったこと無かったけど、ググればなんとかなるもんだね。
正しい方法かどうかわからないけど、以下のようにしたら直った。
$ su # いちいち毎回 sudo するのが面倒だったので。。。 # port uninstall binutils # port extract binutils # build とかまでやっても大丈夫かも # cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_binutils/work/binutils-2.17/binutils/po # nkf -w < ja.po | sed -e 's/EUC-JP/UTF-8/' > ja.po.new # nkf -w < ja.po > ja.po.utf8 # diff ja.po.new ja.po.orig.utf8 13c13 < "Content-Type: text/plain; charset=UTF-8\n"
-
- -
以上。ギアス始まる前に終わってよかったw
もう一回追記。
一旦アンインストールした後に再びインストールするなんて七面倒くさいことしなくても、単に /opt/local/share/locate/ja/LC_MESSAGE/binutils.mo を差し替えればよかったわけだ。
今思うと、なんで上記の方法をとったのかが自分でもわからない。・・・ギアスの時間が迫ってて焦ったから?
というわけで、恐らくこれが普通に直す方法。
$ su # cd /opt/local/var/macports/distfiles/binutils # tar jxf binutils-2.17.tar.bz2 # cd binutils-2.17/binutils/po # nkf -w < ja.po | sed -e 's/EUC-JP/UTF-8/' | msgfmt - -o /opt/local/share/locale/ja/LC_MESSAGE/binutils.mo # exit
以上!