PHP-CPP编译安装
git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP.git
make
sudo make install
如果报错
/bin/sh: php-config: 未找到命令
common/modifiers.cpp:13:10: 致命错误:php.h:没有那个文件或目录
#include <php.h>
如果报错运行cp /www/server/php/81/bin/php-config /usr/bin/php-config
第二次编译清空缓存
sudo make clean
不依赖libphpcpp实现so
PHP-CPP 开发的 PHP 扩展如何不依赖 libphpcpp 实现分发 so
通过 PHP-CPP 官方下载的 makefile 编译安装后的 php 扩展是要依赖
libphpcpp.so
通过下面的修改可以将 libphpcpp 静态链接到你自己开发的 PHP 扩展里,实现在别人的机器里,不安装 PHP-CPP 也可以使用你的 PHP 扩展。
开始
只需确保将您的 PHP 扩展链接到libphpcpp.a而不是与phpcpp.so. 需要libphpcpp.a使用-fpicor重新编译-fPIC。
修改 PHP-CPP 的 Makefile:
COMPILER_FLAGS = -Wall -c -std=c++11 -fvisibility=hidden -DBUILDING_PHPCPP -Wno-write-strings -MD
SHARED_COMPILER_FLAGS = -fpic
STATIC_COMPILER_FLAGS = -fpic
PHP_COMPILER_FLAGS = ${COMPILER_FLAGS} `${PHP_CONFIG} --includes`
自己写的 php 扩展内的 Makefile 修改:
COMPILER_FLAGS = -Wall -c -O2 -std=c++11 -fpic -o
LINKER_FLAGS = -shared -fpic -Wl,--whole-archive
LINKER_DEPENDENCIES = -l:libphpcpp.a -Wl,--no-whole-archive
经过以上 2 步修改 然后验证一下
# ldd ./zimuge.so
linux-vdso.so.1 => (0x00007ffe4d3e2000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f140c06d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f140bd6b000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f140bb54000)
libc.so.6 => /lib64/libc.so.6 (0x00007f140b792000)
/lib64/ld-linux-x86-64.so.2 (0x00007f140c628000)
发现 so,不再依赖 libphpcpp.so。