Showing posts with label 编译. Show all posts
Showing posts with label 编译. Show all posts

Thursday, February 19, 2009

[搬移]诡异地把php-gtk编译好了

http://sskaje.spaces.live.com/blog/cns!CD0E835D6C568521!937.entry
March 06, 2008

命名按照当时在3.3上配的环境,但是每次编译都error

而且代码还调用了一个php脚本生成文件

差一点准备手工改那个.c和dsp了

刚才特意注意了下编译的错误信息,居然发现是环境变量的目录的问题,因为从网上下的zip包的lib和include的gtk都太老了,所以又把新的那部分给覆盖了过去,而且还把cairo也放到了include下



目前扩展只编译成功了php_gtk2.dll和php_gtk_extra2.dll,其他的估计得等相关的win32版本出来才行

等待吧...

[搬移]Build PHP's Extensions with VS 2005

http://sskaje.spaces.live.com/blog/cns!CD0E835D6C568521!1030.entry
June 16, 2008


习惯了编译ImageMagick的PHP API,经常遇到编译错误
不过这些错误也就只有在VC6下才会有
而且,VC6,实在太老了
索性,迁移吧

看了看php官方文档,确认用vs05编译可行
然后,03的虚拟机花了3个小时装了VS05,打了sp1
再装了Intel C++ Compiler
接下来,先编译ImageMagick,没问题,一切正常,编译比较顺利
不过想用Intel C++ Compiler编译的时候,发现错误实在太多了
应该是intel的东西对语法要求比较严格吧

嗯,把php的编译环境搭好,先编译resolv.lib,很轻松,dsw直接转sln就可以编译了
然后,配好win32build,加好环境变量
又把扩展的相关文件拷过去了
基本还是vc6下的一套东西

编译,不行,出错
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\sys/stat.inl(49) : error C
2466: cannot allocate an array of constant size 0
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\sys/utime.inl(39) : error
C2466: cannot allocate an array of constant size 0
这种错误
无语
没见过
上网查,baidu甭想了
google,没有明确的东西
但是看到了php 的bug report里有个 http://bugs.php.net/bug.php?id=39130
定位到了main/config.w32.h

/* vs.net 2005 has a 64-bit time_t. This will likely break
* 3rdParty libs that were built with older compilers; switch
* back to 32-bit */
#define _USE_32BIT_TIME_T 1
#define HAVE_STDLIB_H 1

看到了块注释的部分,嗯,把这个第一行注释掉就行了

然后,imagick,magickwand顺利编译
eaccelerator的,还得在svn里吧fnmatch的.c和.h都拷过来才能编译

[搬移]编译 curl with openssl && zlib

http://sskaje.spaces.live.com/blog/cns!CD0E835D6C568521!1047.entry
July 23, 2008


编译 curl with openssl && zlib
首先下载源码文件
zlib-1.2.3
openssl-0.9.8h
curl-curl-7.18.2
解压之后,形成如下目录树:
build -
curl -
curl-7.18.2
openssl
-
openssl-0.9.8h
zlib
-
zlib-1.2.3

zlib:
用MSVS2005 的command prompt启动
进入zlib的源码目录,执行
nmake -f win32/Makefile.msc
执行完成不必做多余操作

openssl:
首先得安装Perl并添加到path变量中
接下来
perl Configure VC-WIN32 --prefix=E:/build/openssl/openssl
为编译curl的openssl支持,得静态编译
所以
nmake -f ms\nt.mak
nmake -f ms\nt.mak install

curl:
cd进入目录,这里我们首先得编译libcurl
进入lib目录
修改Makefile.vc8
!IFNDEF ZLIB_PATH
ZLIB_PATH = ../../../zlib/zlib-1.2.3
!ENDIF
!IFNDEF OPENSSL_PATH
OPENSSL_PATH = ../../../openssl/openssl-0.9.8h
!ENDIF
然后执行
nmake /f makefile.vc8 CFG=release-ssl-zlib
进行release版的静态编译
完毕之后当前目录会有个 libcurl.lib
这里很诡异的事情,如果直接用vc6的dsw文件生成的文件在release\curllib.lib
而用makefile.vc6/8则是libcurl.lib,不知道写makefile的人咋想的
然后回到 curl-7.18.2/src
继续
nmake -f Makefile.vc8 cfg=release-ssl-zlib
完毕,当前目录就有个curl.exe,就是静态编译后的版本