今天在linux下开发php扩展,发现修改源代码重新编译安装后,.so文件还是原来的,并没有更新。最后清理了所有编译后产生的文件,重新编译安装才更新了.so文件。估计是编译后产生了缓存,为了方便清理,可以在ext_skel文件后面加入下面代码。
$ECHO_N " remake$ECHO_C"
cat >remake <
#!/bin/sh
keepfiles="php_${extname}.h ${extname}.c ${extname}.php config.m4 config.w32 CREDITS EXPERIMENTAL remake"
allfiles=\$(ls .)
for f in \$allfiles
do
echo "\$keepfiles" | grep -q "\$f"
if [ \$? -ne 0 ]
then
rm -rf \$f
fi
done
#phpize路径
/usr/local/webserver/php/bin/phpize
#php-config路径
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
#编译
make
eof
chmod 755 ./remake
测试运行
在扩展目录里新生成了remake文件,remake源码如下:
#!/bin/sh
keepfiles="php_abc.h abc.c abc.php config.m4 config.w32 CREDITS EXPERIMENTAL remake"
allfiles=$(ls .)
for f in $allfiles
do
echo "$keepfiles" | grep -q "$f"
if [ $? -ne 0 ]
then
rm -rf $f
fi
done
/www/wdlinux/nginx_php-5.3.17/bin/phpize
./configure --with-php-config=/www/wdlinux/nginx_php-5.3.17/bin/php-config
make
以后重新编译扩展的时候用 ./remake 替代make命令编译即可。