这里以mac为例,linux环境也是类似的。这里只是粗略的修改及编译过程,不会有太多详细过程。
在https://www.php.net/downloads或者https://github.com/php/php-src/releases下载php 7.3.0的源码,然后解压到文件夹里面
打开终端,输入
cd 源码路径/ext php ./ext_skel.php --ext test(插件名)
这里已经在ext目录下创建了test扩展项目.
要引入我们自己的C++库文件,当然要编译出这个库文件。这里我简单的写下编译过程,详细的网上很多,我的C++代码放在bridge目录下,编译的库名字是libmytest,下面是makefile文件
CC=g++ CFLAGS = -Wall -fPIC # -fPIC在linux一定要加上,不然会报错的 DEFINE = INCLUDE = -I./ SOURCES = $(wildcard *.cpp) OBJS = $(patsubst %.cpp,%.o,$(SOURCES)) TARGET = libmytest # 库名 build: $(CC) $(CFLAGS) -c $(SOURCES) ar cru $(TARGET).a $(OBJS) clean: rm -f $(OBJS) rm -f $(TARGET)
在终端输入
cd bridge路径 make
如果没有错,将会编译出libmytest.a的文件
我们把test扩展的test.c文件名改成test.cpp,修改config.m4
PHP_ARG_ENABLE(test, whether to enable test support, [ --enable-test Enable test support], no) if test "$PHP_TEST" != "no"; then PHP_REQUIRE_CXX() PHP_SUBST(TEST_SHARED_LIBADD) PHP_ADD_INCLUDE(./bridge/) PHP_ADD_LIBRARY(stdc++, 1, TEST_SHARED_LIBADD) PHP_ADD_LIBRARY_WITH_PATH(mytest, ./bridge/, TEST_SHARED_LIBADD) AC_DEFINE(HAVE_TEST, 1, [ Have test support ]) PHP_NEW_EXTENSION(test, test.cpp, $ext_shared) fi
在test扩展的目录,终端输入
phpize
这时能看到生成了configure文件,我们打开这个文件,把里面所有的test.c修改成test.cpp,这时我们在test.cpp里面按平时调用的方式调用就好了。
下面我们编译test扩展
./configure --with-php-config=php-config路径 make & make install
没有出错的话,会安装到扩展目录,去php.ini开启这个扩展就好了
标签:php,自定义,编译,C++,7.3,cpp,TEST,test,PHP From: https://www.cnblogs.com/opbye/p/17167178.html