下载好rar-4.0.0.tgz,进行解压~~
gunzip rar-4.0.0.tgz
得到tar,再解压~~~
tar -xvf rar-4.0.0.tar
cd到目录rar-4.0.0.tar里
cd rar-4.0.0/
用phpize确认一下已安装php版本
/usr/local/php/bin/phpize
输出
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
然后进行生成编译配置
./configure --with-php-config=/usr/local/php/bin/php-config
这里要根据自己的路径。
xiuixuiux刷出一堆代码
最后,make & make install 就行,但是我这里make出错了。
显示:
/tmp/pear/download/rar-4.0.0/rararch.c:1173:18: error: ‘zend_class_entry’ {aka ‘struct _zend_class_entry’} has no member named ‘iterator_funcs’; did you mean ‘iterator_funcs_ptr’?
rararch_ce_ptr->iterator_funcs.funcs = &rararch_it_funcs;
^~~~~~~~~~~~~~
iterator_funcs_ptr
make: *** [Makefile:198: rararch.lo] Error 1
重点看到
/tmp/pear/download/rar-4.0.0/rararch.c:1173:18: error: ‘zend_class_entry’ {aka ‘struct _zend_class_entry’} has no member named ‘iterator_funcs’; did you mean ‘iterator_funcs_ptr’?
让我很纳闷,索性去百度了一通,果然找到了,原来是因为
这是由于新的Zend代码由之前的:
zend_class_iterator_funcs iterator_funcs;
class_container.iterator_funcs.funcs = NULL;
已经修改成:
zend_class_iterator_funcs *iterator_funcs_ptr;
class_container.iterator_funcs_ptr = NULL;
那就好办了,直接进配置文件修改一下即可~~
编辑rar-4.0.0/目录下的rararch.c文件
修改第961行 it->parent.funcs = ce->iterator_funcs.funcs;
改为:it->parent.funcs = ce->iterator_funcs_ptr;
修改1173行 rararch_ce_ptr->iterator_funcs.funcs = &rararch_it_funcs;
改为 rararch_ce_ptr->iterator_funcs_ptr = &rararch_it_funcs;
(注意别复制到空格)
修改完保存,重新编译,成功~ ~ ~ ~
最后一次更新于2020-02-21