64bit機で replaceGIFData が動かない
題名のような報告をユーザから受けたので早速調査。
…しようにも手元に64bit機が無いので色んな所でshout開始。
>y< どなたか 64bit環境の linux を動かしてる方いませんか。(;'-') >y< 自分の作ってるライブラリの特定メソッドが 64bit でだけ問題が起きるみたいで… (;ω;) <I> 64bitのCentOSが入ったVirtual Machineが一つあるけど
という感じでアカウントを頂けました。(σ´Д`)σ 持つべきものは友達。
検証
で、実際に試してみたら確かに replaceGIFData が動きません。
[yoya@i]$ php swfreplacegifdata.php ~/flash/cheki.swf 1 aria.gif php: symbol lookup error: /home/yoya/lib/php/extensions/no-debug-non-zts-20060613/swfed.so: undefined symbol: DGifOpen
あー。リンクされてないのか…
LDFLAGS="-L/home/yoya/lib -Wl,-rpath,/home/yoya/lib -lgif" \ ./configure --prefix=/home/yoya --with-gif-dir=/home/yoya --with-png-dir=/home/yoya
これで動きました。とりあえず回避策は発見。
32bit CentOS 環境では -lgif なくても動いてるけど、この違いは何だろうか。