Daily Archives: 2012/11/12

libiconv 1.14 のビルドで躓く

php ビルド時のライブラリを最新版にしよう計画、実はあっさりいけるんじゃないかと期待したlibiconv 1.14 であっさり難航。

libiconv は公式には VC でのビルドをサポートしなくなったため、How to Build libiconv with Microsoft Visual Studio の手順でちゃんとビルドされることを確認しています。ただこの手順は dll をビルドするものだというぐらいで。

素人考えで、dll ではなくスタティックライブラリをビルドするように VC の設定を変えりゃできるんじゃね、と買えたら確かに .lib ができてはくれました。

が、こいつで php をビルドすると外部参照 libiconv_set_relocation_prefix を解決できず止まってしまいます。

まさかと思って dumpbin してみると、1.11 だと libiconv_set_relocation_prefix がある。

dumpbin /headers iconv.lib | findstr "libiconv"
         COMDAT; sym= libiconv_set_relocation_prefix
         COMDAT; sym= $pdata$libiconv_set_relocation_prefix
         COMDAT; sym= $unwind$libiconv_set_relocation_prefix
         COMDAT; sym= libiconv_relocate
         COMDAT; sym= $pdata$libiconv_relocate
         COMDAT; sym= $unwind$libiconv_relocate
         COMDAT; sym= libiconv_open
         COMDAT; sym= $pdata$libiconv_open
         COMDAT; sym= $unwind$libiconv_open
         COMDAT; sym= libiconv
         COMDAT; sym= $pdata$libiconv
         COMDAT; sym= $unwind$libiconv
         COMDAT; sym= libiconv_close
         COMDAT; sym= $pdata$libiconv_close
         COMDAT; sym= $unwind$libiconv_close
         COMDAT; sym= libiconvctl
         COMDAT; sym= $pdata$libiconvctl
         COMDAT; sym= $unwind$libiconvctl
         COMDAT; sym= libiconvlist
         COMDAT; sym= $pdata$libiconvlist
         COMDAT; sym= $unwind$libiconvlist

しかし 1.14 の lib には libiconv_set_relocation_prefix がない。

dumpbin /headers libiconv.lib | findstr "libiconv"
Dump of file d:\php\tmp\new_lib\libiconv.lib
         COMDAT; sym= libiconv_open
         COMDAT; sym= $pdata$libiconv_open
         COMDAT; sym= $unwind$libiconv_open
         COMDAT; sym= libiconv
         COMDAT; sym= $pdata$libiconv
         COMDAT; sym= $unwind$libiconv
         COMDAT; sym= libiconv_close
         COMDAT; sym= $pdata$libiconv_close
         COMDAT; sym= $unwind$libiconv_close
         COMDAT; sym= libiconv_open_into
         COMDAT; sym= $pdata$libiconv_open_into
         COMDAT; sym= $unwind$libiconv_open_into
         COMDAT; sym= libiconvctl
         COMDAT; sym= $pdata$libiconvctl
         COMDAT; sym= $unwind$libiconvctl
         COMDAT; sym= libiconvlist
         COMDAT; sym= $pdata$1$libiconvlist
         COMDAT; sym= $chain$1$libiconvlist
         COMDAT; sym= $pdata$0$libiconvlist
         COMDAT; sym= $chain$0$libiconvlist
         COMDAT; sym= $pdata$libiconvlist
         COMDAT; sym= $unwind$libiconvlist

はて、一体何処で libiconv_set_relocation_prefix が抜けてしまったんだろう。1.11 についていた makefile.msvc の中身に秘密があるのかなあ……。

Bookmark 2012/11/12

PFU、Wi-Fi接続できるiOS/Android対応ドキュメントスキャナ ~3年ぶりのScanSnap S1500後継、ストレート排紙に

遂に新機種。センサが CIS になってしまったけど本当に画質は維持なのかなあ。