我正在尝试在我的本地计算机上安装xhp,这是一台运行os x 10.8.2,又名Mountain Lion(64位)的Macbook pro。我xampp安装了开发包。
我已经花了很多时间试图让它发挥作用,我觉得我非常接近。但是......我已经通过自制程序安装了所有依赖项,升级了我的XCode版本并安装了XCode命令行工具。
通过research,我了解到xampp正在以32位模式运行,而Mountain Lion(文章中的Snow Leopard,但我在这里猜测它是一样的)在64位模式下编译。 / p>
这是我遇到麻烦的地方。我试过./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与解决方案中的makefile不匹配。
有什么想法吗?
答案 0 :(得分: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'
我不知道上述所有步骤是否都是必要的,但它对我有用。希望这会让别人有些头疼。