步骤:
把c函数编译成.so文件。 .so文件是动态链接库,其他程序可以在运行时动态链接.so文件。在php扩展中定义一个php函数,去调用c函数编译php时,利用 "make LDFLAGS=-l" 选项指定要加载的动态库,把.so文件加载进来。这样,在php中,就可以像调用内置函数一样调用c函数了,很方便。
方法二:通过system、exec函数参考:PHP 调用C的代码_深度Java的博客-CSDN博客_php调用c
思路:
把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。