Aho-Corasickを実装したライブラリに、Spare partsというものがある。
http://www.fastar.org
で、170万件あまりのデータを読ませようと思ったら、メモリが足りなくて
落ちた。物理メモリは32GBもあるマシンなので、問題は論理的な限界の方だ。
では、というわけで、makefileのgccのオプションに-m64を追加して実行してみると、
ld.so.1: y_grep: fatal: /usr/local/lib/libstdc++.so.6: wrong ELF class: ELFCLASS32
Sparcはもちろん64bitなので、64bit対応のライブラリがどこかにあるだろうと探して見ると、
findでlibstdc++.so.6を探し出し、
file /usr/local/lib/sparcv9/libstdc++.so.6
を実行してみると
/usr/local/lib/sparcv9/libstdc++.so.6: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped
おそらくこれだろう、というわけで、
setenv LD_LIBRARY_PATH /usr/local/lib/sparcv9
としたら、無事動いてくれたできた。
金と力に任せた計算のようで、なんだかなーという気はするが。