php extensionへの既存C/C++ライブラリ取り込み

最近php extensionを自作する機会が出たので、いろいろと検索しても情報が少なかったのもあってメモ

extensionの作成helloworld的なページ
http://dsas.blog.klab.org/archives/50777398.html
http://dsas.blog.klab.org/archives/50782987.html
http://dsas.blog.klab.org/archives/50903613.html

CPPを含む場合の対応について
http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/

その他参考にしたページ
http://pwiki.awm.jp/~yoya/?PHP/ext#classconst
http://oshiete.goo.ne.jp/qa/7151754.html
http://d.hatena.ne.jp/rikunora2/touch/20100802/1280731016

で、やろうとしたことは既存の静的ライブラリ(.aファイル)をphpで呼び出せるようにラッパーすること。
結論から言うと、PHP extensionの作成でライブラリをリンクするときは、shared objectでないといけないらしい。
静的ライブラリとしてコンパイルした物は使えない。
エラーとしてはこういうものがmake時に出力される模様。

/usr/bin/ld: /path/to/hoge.a(hoge.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/path/to/hoge.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [huga.la] エラー 1

「-fPIC」というオプションをつけろということらしい。