步骤:

把c函数编译成.so文件。
.so文件是动态链接库,其他程序可以在运行时动态链接.so文件。
在php扩展中定义一个php函数,去调用c函数编译php时,利用 "make LDFLAGS=-l" 选项指定要加载的动态库,把.so文件加载进来。

这样,在php中,就可以像调用内置函数一样调用c函数了,很方便。

方法二:通过system、exec函数

参考:PHP 调用C的代码_深度Java的博客-CSDN博客_php调用c

phpcphp若何挪用c函数 CSS

思路:

把c函数编译成可实行文件利用system或者exec命令实行可实行文件,就跟实行其他shell程序一样。

知识扩展

linux系统为动态连接器供应了一个大略的接口,许可运用程序在运行时加载和链接共享库。

void dlopen(const char filename, int flag);

参考:https://www.cnblogs.com/anker/p/3746802.html

那么,在java中如何加载.so共享库呢?

Java定义了一个标准调用规则,叫做java本地接口(Java Native Interface,JNI),它许可Java程序调用本地的C和C++函数。

JNI的基本思路是将本地C函数,如foo,编译到共享库中,如foo.so。

当一个正在运行的Java程序试图调用函数foo时,Java阐明程序利用dlopen接口(或者与其类似的接口)动态链接和加载foo.so,然后再调用foo。