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

本文详细介绍了如何在PHP中调用C语言编写的动态库libhello.so,包括环境搭建、C语言生成so文件、制作PHP模块以及动态加载和静态加载两种方式,提供了一种PHP与C交互的实践方法。
摘要由CSDN通过智能技术生成

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", 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值