2013-04-29 90 views
0

我试图在我的本地机器上安装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以下几种方式:

  1. 的./configure

  2. CFLAGS = -m32 CPPFLAGS = -m32 CCASFLAGS = -m32的./configure

  3. 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代码后,我得到以下错误:

http://pastebin.com/80w2sWQN

我发现了同样的问题作为issue on Github,但我makefile与解决方案中的不匹配。

任何想法?

回答

0

最后我解决了它。我认为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' 

我不知道,如果以上所有步骤都是必要的,但它为我工作。希望这会为别人解决一些头痛问题。

相关问题