php调用第三方so,php调用c语言编写的so动态库

PHP除了使用扩展库的方式调用c函数,还可以通过socket通信的方式。这里介绍前者。

第一步: 环境搭建

1. 先看本机是否已经安装了较低版本的php

#find /usr -name "php"

或者rpm -aq | grep php

如果存在,就使用rpm命令等方式卸掉

2. php源码安装,configure的参数如下

#./configure  --prefix=/usr/local/php   --with-mysql --with-mysqli  --enable-so  --with-pdo-mysq=/var/lib/mysql  --with-apxs2=/usr/local/apache/bin/apxs --with-zlib --enable-zip --enable-mbstring

3. 如果已经安装了两个版本的php,使用apache函数,确定使用的是哪个版本的php

echo "Hello World";

phpinfo();

?>

4. 如果已经安装了两个版本的php,使用php查看版本号或确定php.ini的配置文件

#/usr/local/php/bin/php -v

#/usr/local/php/bin/php -i | grep php.ini

第二步: 用C生成so文件

#vim hello.c

int cc_add(int a, int b)

{

return a + b;

}

# gcc -O -c -fPIC -o hello.o hello.c                      // -fPIC:是指生成的动态库与位置无关

# gcc -shared -o libhello.so hello.o                     // -shared:是指明生成动态链接库

# cp libhello.so /usr/local/lib      // 把生成的链接库放到指定的地址

# echo /usr/local/lib > /etc/ld.so.conf.d/local.conf       //  把库地址写入到配置文件中

# /sbin/ldconfig                // 用此命令,使刚才写的配置文件生效

以下是测试so文件

#include 

int main()

{

int a = 4, b = 6;

printf("%d\n", 

你可能感兴趣的:(php调用第三方so)