0

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

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

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

这就是我遇到麻烦的地方。我尝试过 ./configure 以下方式:

  1. 。/配置

  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

我发现与Github 上的问题相同的问题,但我的 makefile 与解决方案中的不匹配。

有任何想法吗?

4

1 回答 1

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'

我不知道上述所有步骤是否都是必要的,但它对我有用。希望这可以为其他人省去一些麻烦。

于 2013-04-29T21:32:35.700 回答