在Mac OS X上使用xampp构建XHP php扩展
我试图在我的本地机器上安装xhp,这是一台运行os x 10.8.2的Macbook Pro,又名Mountain Lion(64位)。我已安装开发包的xampp。在Mac OS X上使用xampp构建XHP php扩展
我已经花了好几个小时试图让它开始工作,我觉得我很接近。但是...我已经通过自制软件安装了所有依赖项,升级了我的XCode版本并安装了XCode命令行工具。通过research,我了解到xampp运行在32位模式下,而Mountain Lion(文中的Snow Leopard,但我猜这里是同样的东西)在64位模式下编译。
这是我遇到麻烦的地方。我试着运行./configure以下几种方式:
的./configure
CFLAGS = -m32 CPPFLAGS = -m32 CCASFLAGS = -m32的./configure
MACOSX_DEPLOYMENT_TARGET = 10.8 CFLAGS =' - O3 -fno-common -arch i386 -arch x86_64'LDFLAGS =' - O3 -arch i386 -arch x86_64' CXXFLAGS =' - O3 -fno-common -arch i386 -arch x86_64' ./configure --with-php-config =/Applications/XAMPP/xamppfiles/bin/php-config-5.3.1
1)失败make
。可能是因为32/64位的问题。
2)和3)成功,但它打破了PHP。添加xhp.so扩展为php.ini,并运行一些随意的,但是有效的PHP代码后,我得到以下错误:
我发现了同样的问题作为issue on Github,但我makefile与解决方案中的不匹配。
任何想法?
最后我解决了它。我认为Github问题的解决方案是修改源目录中的Makefile,而实际上这是xhp/Makefile问题。
解决的办法是加做如下修改,以XHP/Makefile文件:
变化:
g++ -shared -Wl,-soname,libxhp.so -o libxhp.so $^
要:
g++ -m32 -shared -Wl,-arch,i386 -o libxhp.so $^
变化:
ifdef DEBUG
CPPFLAGS = -fPIC -ggdb -Wall -DDEBUG
else
CPPFLAGS = -fPIC -g -Wall -O3 -minline-all-stringops
endif
要:
ifdef DEBUG
CPPFLAGS = -fPIC -ggdb -Wall -DDEBUG -arch i386
else
CPPFLAGS = -fPIC -g -Wall -O3 -minline-all-stringops -arch i386
endif
然后用参数配置:
./configure --with-php-config=/usr/local/zend/bin/php-config
--target=i386-apple-darwin10.8.2 --build=i386-apple-darwin
--host=i386-apple-darwin10.8.2 CFLAGS='-arch i386' LDFLAGS='-arch i386'
CC='gcc -m32' CXX='g++ -m32' CHOST='i386-apple-darwin10.8.2'
CPPFLAGS='-arch i386'
我不知道,如果以上所有步骤都是必要的,但它为我工作。希望这会为别人解决一些头痛问题。