結論

$ make NO_GETTEXT=1

前提

  • GNU CC
  • GNU make

経緯

進学し環境が初期化されたので再度gitをインストールしようとしていた。管理者権限は与えられないのでパッケージマネージャ等は使えない。したがってソースからビルドする必要がある。gitのバージョンは2.9.5。

症状

$ make
...
Undefined                       first referenced
 symbol                             in file
libintl_bind_textdomain_codeset     libgit.a(gettext.o)
libintl_gettext                     libgit.a(lockfile.o)
libintl_textdomain                  libgit.a(gettext.o)
libintl_bindtextdomain              libgit.a(gettext.o)
libintl_ngettext                    libgit.a(wt-status.o)
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status

libintl*の参照先が無いと言われる。これは多言語をサポートするためのもののよう。Solarisにはこれらの"libintl“が無い版しかないのでおこられる(たとえば、libintl_gettextではなくgettextが入っている)。

解決

多言語をサポートしなくてよい(英語さえあればよい)のであればNO_GETTEXTをdefineすればこれらを使わずにビルドしてくれる(とINSTALLに書いてあった)。

所感

学校の環境にはGNU C libraryが入っていて、それを使えばいいはずなのでLD_LIBRARIESにそこへのパスを通してみるも同じ現象が発生しうまく行かなかった。