Plan 9とGo言語のブログ

主にPlan 9やGo言語の日々気づいたことを書きます。

Drawtermでキーボードを叩くとNSPortCoderな警告が出力される

この記事はTumblrで公開されていました

drawtermを使ったとき、キーボードでキーを叩くと以下のような警告が出力され続ける場合があります。

Warning - conversion from 64 bit to 32 bit integral value requested within NSPortCoder, but the 64 bit value 00000000000 cannot be represented by a 32 bit value *1

これは、OSが64bitで実行バイナリが32bitのときに発生します。たとえばfileコマンドでdrawtermを調べると以下のように32bitです。

$ file drawterm
drawterm: Mach-O executable i386

よって、drawtermを64bitバイナリとしてコンパイルすれば解決します。

$ hg clone https://bitbucket.org/jas/drawterm-cocoa
$ cd drawterm-cocoa
$ cp Make.osx-cocoa Make.osx-cocoa64

Make.osx-cocoa64を編集します。直接Make.osx-cocoaを変更してもさしたる影響はありません。

$ diff -u Make.osx-cocoa Make.osx-cocoa64
--- Make.osx-cocoa  2014-08-04 19:33:16.000000000 +0900
+++ Make.osx-cocoa64    2014-08-04 19:35:02.000000000 +0900
@@ -14,8 +14,8 @@
# The SDK can be left blank to use the default SDK for your platform, e.g.,
# on a 10.9 machine with the latest Xcode that you don't need to run on
# any prior versions, just keep the SDK as defined.
-ASFLAGS=$(ASFLAGS32)
-ARCHFLAGS=$(ARCHFLAGS32)
+ASFLAGS=$(ASFLAGS64)
+ARCHFLAGS=$(ARCHFLAGS64)
SDK=

PTHREAD=-lpthread  # for Mac

あとはmakeして終わりです。

$ make 'CONF=osx-cocoa64'
$ mv drawterm $HOME/bin

*1:00000のところは叩くキーによって変わる大きな整数です