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 の中身に秘密があるのかなあ……。
0 Comments.