今天so终于是调起来了,服务器上的问题虽然一度没有办法,但是也最终解决了。好了 ,把过程步骤和问题都汇总一下啦偷笑
先来说一下网上烂大街的调用so步骤:
首先,编写一个简单的so:
int hello(int a,int b)
{
return a+b;
}
然后将它编译成.so文件:
放到系统库中:
$sudo cp libhello.so /usr/local/lib
$ sudo ldconfig
在这里说明一下,之前的linux系统的用户动态库目录设置好像是在/etc/ld.so.conf.d/local.conf文件中,而在我使用的ubuntu12.04中是在/etc/ld.so.conf.d/libc.conf这个文件中,而且默认已设置为/usr/local/lib这个目录,将我们的so文件放到这个目录后,需用ldconfig命令使其生效。
下面我们写个test程序来验证一下:
#include <stdio.h>
int main()
{
int a = 3, b = 4;
printf("%d + %d = %d\n", a, b, hello_add(a,b));
return 0;
}
编译并执行:
$ gcc -o hellotest hellotest.c -lhello
$ ./hellotest
3 + 4 = 7
OK,下面我们来制作PHP模块。首先确保你安装了 php-devel (centOS系列),ubuntu下面是php5-dev。
$ sudo apt-get update
$ sudo apt-get install php5-dev
好吧我是手打的,包名有点记不清了,出错的话自行查一下就OK。
然后再下载php源码,建议使用版本不要太高,

本文详细介绍了如何在PHP中调用so动态链接库,从创建so文件到编写PHP扩展,再到配置php.ini和重启服务,实现函数调用的成功。过程中提到了Ubuntu系统中动态库路径的设置,以及在不同步骤中需要注意的细节。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



