Windows下編譯 ImageMagick 的php API

首先,需要的軟件包有:
PHP5.2.5 源碼包[http://www.php.net/downloads.php ]
bindlib_w32 [http://www.php.net/extra/bindlib_w32.zip ]
win32build [http://www.php.net/extra/win32build.zip ]
PHP5.2.5 Win32 二進制包 [http://www.php.net/downloads.php ]
ImageMagick 6.3.8-0 Windows版源碼 [http://www.imagemagick.org/download/windows/ ]
Imagick 2.1.0RC3 源碼包 [http://pecl.php.net/package/imagick ]
MagickWandForPHP 1.0.6 源碼包 [http://www.imagemagick.org/download/php/ ]

說明一下:
php源碼包就不用說了,編譯需要php的源碼的。
bindlib_w32 是爲了編譯一個resolv.lib
win32build是php編譯最基本的一些lib文件和include文件。
php的二進制包是因爲需要/dev/php5ts.lib文件,當然,你可以選擇自己編譯生成,但你的工作量將因此增加很多倍。
ImageMagick的windows源碼是用來編譯windows下的lib文件,同時,編譯MagickWand和Imagick都還需要部分源 碼。
Imagick是PHP官方提供的一個ImageMagick的擴展,而MagickWandForPHP 則是ImageMagick官方提供的。

此外,還需要一些環境:

Microsoft Visual Studio 6, Cygwin


ok,現在開始。



       建立一個目錄 E:/develop,然後分別建立兩個子目錄,ImageMagick,PHPBuild。將ImageMagick源碼直接解壓到 ImageMagick目錄下;將php5.2.5的源碼解壓到PHPBuild目錄,同時,將bindlib_w32解壓到 PHPBuild/bindlib_w32下,win32build 解壓到 PHPBuild/win32build 下。


       首先進入ImageMagick/ImageMagick-6.3.8/VisualMagick/configure,用VC6打開 configure.dsw,編譯,這樣就可以把ImageMagick的編譯配置文件生成。生成之後,運行當前目錄的configure.exe,第二 頁選擇Static Multi-threaded DLL runtimes (VisualStaticMTDLL).,Build Options什麼都不選。Edit ‘magick-config.h’的根據自己的情況來定。直接下一步,下一步,完成,稍等一會兒,ImageMagick/ImageMagick- 6.3.8/VisualMagick就會生成一個VisualStaticMTDLL.dsw.


        用VC6打開,Build ==> Set Active Configuration…,打開,選擇All Release。然後,直接BuildèRebuild All。這個編譯的過程耗時較長,所以可以考慮安裝官方說明文檔的說法,衝杯咖啡,慢慢等。

        編譯完成之後,在ImageMagick/ImageMagick-6.3.8/VisualMagick/lib下會有17個以CORE_RL_ 開頭的Lib文件,和兩個原來就有的X11.lib和Xext.lib。

       將ImageMagick/ImageMagick-6.3.8/和ImageMagick/ImageMagick-6.3.8/magick加入VC 的Include目錄裏邊,將ImageMagick/ImageMagick-6.3.8/VisualMagick/lib加入Lib的目錄裏。

       接下來,進入PHPBuild/bindlib_w32,用vc打開bindlib.dsw,release編譯,將生成的resolv.lib覆蓋 PHPBuild/win32build/lib下的同名文件。

解壓PHP的二進制版本,並將目錄添加到系統環境變量的Path裏。
運行Cygwin,進入PHPBuild/php-5.2.5/ext,執行



這樣,ext目錄下就會生成兩個新的目 錄,imagick和magickwand,將之前下載的兩個擴展的源碼分別直接解壓覆蓋兩個目錄的同名文件。並將php二進制包的 dev/php5ts.lib分別複製到兩個目錄中。

       下面就得改dsp文件了。將這些替換原有dsp的相應內容。
magickwand.dsp:

 

 

 

imagick.dsp

因爲我只需要Release的dll,所以 Debug部分我沒改。(這些內容,參考DIrk的Magickwand的編譯以及他提供的dsp文件)

用VC6打開,選擇release模式,編譯。
成功後將會在PHPBuild/php-5.2.5/Release_TS下生成php_magickwand.dll 和 php_imagick.dll。編譯過程就結束了。


PS:
我生成的php_imagick.dll和php_magickwand.dll




UPDATE:

嗯,關於安裝,不得不說的
ImageMagick/ImageMagick-6.3.8/config
這個目錄是ImageMagick的配置文件
php方面的安裝,只要把dll複製到php的ext目錄,再修改php.ini,加上extension=php_imagick.dll或 extension=php_magickwand.dll

而配置文件部分
我是將這個config目錄複製到了php的二進制文件夾的extra目錄,改名爲imagemagick_config,主要是方便管理和方便辨識
然後添加一個系統環境變量MAGICK_HOME,指到這個目錄即可

 

原文:http://www.bitnp.net/viewthread.php?tid=282291

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章