ag のビルド

ackより速いagを試してみる - secretbase.log
MinGWでSilver Searcher(ag.exe)をビルドする方法。 #Windows #MinGW - Qiita


ビルドした ag

chocolatey install

mingw を簡単にインストールしようと思って chocolatey 導入。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

mingw install

cinst mingw

mingw を起動して mingw-get のリストの更新と実体の更新

mingw-get update
mingw-get upgrade

ag build

git clone git://github.com/ggreer/the_silver_searcher.git
cd the_silver_searcher.git
git co c9c2b5b

MinGWでSilver Searcher(ag.exe)をビルドする方法。 #Windows #MinGW - Qiita だと zlib もバイナリを入れているけれど、 mingw-get list で libz が見つかったので、そちらを使用。

mingw-get install mingw32-libz

pcre-x86-mingw4-8.21-src.tar.bz2
pcre-x86-mingw4-8.21-bin.tar.bz2

  • pcre-x86-mingw4-8.21-src.tar.bz2内のpcre.h.genericとconfig.h.genericを.genericを外してthe_silver_searcher/src内にコピーする。
  • pcre-x86-mingw4-8.21-bin.tar.bz2内のbin/libpcre.dllをthe_silver_searcher内にコピーする。
  • the_silver_searcher/Makefile.w32を以下のように書き換える。
+ LDFLAGS = -static -static-libgcc
- LIBS = -lz -lpthread -lpcre -lshlwapi
+ LIBS = ./libpcre.dll -lz -lpthread  -lshlwapi
- 	gcc -o $@ $(OBJS) $(LIBS)
+ 	gcc $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
mingw32-make -f Makefile.w32

mingw 外で使うには以下のファイルも必要。

  • libpcre.dll
  • pthreadGC2.dll

蛇足

LDFLAGS = -static で libz-1.dll は不要になった。
libgcc_s_dw2-1.dll も不要になったみたい。
pthreadGC2.dll も外したいけど、どうしたらいいんだ?

pcre

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.bz2

./configure
mingw32-make.exe
mingw32-make.exe install

gcc に -I を指定したり -L を指定したりしたけど、使ってくれなかったみたい。