用xampp在mac os x上构建XHP php扩展


Building XHP php extension on mac os x with xampp

我试图在我的本地机器上安装xhp,一台运行os x 10.8.2的Macbook pro,又名Mountain Lion(64位)。我已经安装了开发包。

我已经花了很多时间试图让它工作,我想我已经很接近了。但是…我已经通过homebrew安装了所有的依赖项,升级了XCode版本,并安装了XCode命令行工具。

通过研究,我了解到xampp在32位模式下运行,而Mountain Lion(文章中的雪豹,但我猜它在这里是一样的)在64位模式下编译。

这就是我遇到麻烦的地方。我试过用以下方法配置。/configure:

    ./configure
  1. CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure

  2. MACOSX_DEPLOYMENT_TARGET=10.8 CFLAGS='- 03 -fno-common -arch i386-arch x86_64' LDFLAGS=' -arch x86_64'CXXFLAGS='- 3 -fno-common -arch i386 -arch x86_64'./configure——with-php-config =/应用程序/XAMPP/xamppfiles/bin/php-config-5.3.1

1)在make失效。可能是因为32/64位的问题。

2)和3)成功了,但是它破坏了PHP。添加xhp后。所以扩展到PHP .ini,并运行一些任意但有效的PHP代码,我得到以下错误:

http://pastebin.com/80w2sWQN

我在Github上发现了同样的问题,但我的makefile与解决方案中的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'

我不知道上述所有步骤是否都是必要的,但它对我有效。希望这将为其他人节省一些头痛。