1. 程式人生 > >PHP7 學習筆記(七)如何使用zephir編譯一個擴展記錄

PHP7 學習筆記(七)如何使用zephir編譯一個擴展記錄

ring0 hub dev conf rep repo ase comm extension

一、zephir 編譯遇到的錯誤

安裝

git clone https://github.com/phalcon/zephir
$ cd zephir
$ ./install-json
$ ./install -c

編譯

www@ubuntu4:~$ zephir build

────────────────────────────────────────────────────────────
  The Zephir Parser extension is not loaded.
  Note: Zephir no longer distributed with internal parser.
  
  To 
install latest stable Zephir Parser please refer to: https://github.com/phalcon/php-zephir-parser ────────────────────────────────────────────────────────────

二、php-zephir-parser 安裝

git clone git://github.com/phalcon/php-zephir-parser.git

php7.0-dev 安裝報錯

www@ubuntu4:~$ sudo apt-get install php7.0-dev gcc
make re2c autoconf Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php7.0-dev E: Couldnt find any package by regex php7.0-dev

如何讓解決

1、php7的存儲庫的問題,添加php7 ppa

sudo add-apt-repository ppa:ondrej/php

2、更新庫

sudo apt-get update

3、現在做一個搜索來確認php7是有的

sudo apt search php7

技術分享

重新安裝,則不會報錯

www@ubuntu4:~$ sudo apt-get install php7.0-dev gcc make re2c autoconf
Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version.
gcc set to manually installed.
make is already the newest version.
re2c is already the newest version.
The following extra packages will be installed:
  automake autotools-dev debhelper dh-apparmor dh-php gettext intltool-debian
  libasprintf-dev libgettextpo-dev libgettextpo0 liblist-moreutils-perl
  libltdl-dev libmail-sendmail-perl libssl1.1 libsys-hostname-long-perl
  libtool libunistring0 m4 php-common php-pear php-xml php7.0-cli
  php7.0-common php7.0-json php7.0-opcache php7.0-readline php7.1-common
  php7.1-xml pkg-php-tools po-debconf shtool xml2

開始編譯

www@ubuntu4:~/ffmpeg_videos/php-zephir-parser$ sudo ./install
Generating parser...
Parser statistics: 132 terminals, 99 nonterminals, 470 rules
                   982 states, 0 parser table entries, 0 conflicts
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012
libtool: compile:  gcc -I. -I/home/www/ffmpeg_videos/php-zephir-parser -DPHP_ATOM_INC -I/home/www/ffmpeg_videos/php-zephir-parser/include
-I/home/www/ffmpeg_videos/php-zephir-parser/main -I/home/www/ffmpeg_videos/php-zephir-parser -I/usr/include/php/20151012

-I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext

-I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -march=native -mtune=native -O2 -fomit-frame-pointer -fvisibility=hidden -flto
-c /home/www/ffmpeg_videos/php-zephir-parser/zephir_parser.c -fPIC -DPIC -o .libs/zephir_parser.o

編譯完成

技術分享

查找.so 文件路徑

www@ubuntu4:~ sudo find / -name zephir_parser.so
/usr/lib/php/20151012/zephir_parser.so

配置php.ini 文件

sudo vim /opt/php-7.1.9/etc/php.ini

添加一下內容:

[Zephir Parser]
extension=/usr/lib/php/20151012/zephir_parser.so

技術分享

安裝完畢

三、重新編譯,出現同樣的錯誤:

www@ubuntu4:~/ffmpeg_videos/zephir-framework/lib$ zephir build

────────────────────────────────────────────────────────────
  The Zephir Parser extension is not loaded.
  Note: Zephir no longer distributed with internal parser.
  
  To install latest stable Zephir Parser please refer to:
  https://github.com/phalcon/php-zephir-parser
────────────────────────────────────────────────────────────

好糾結啊,如何解決:

sudo ln -s /opt/php-7.0.9/bin/php /usr/bin/php

繼續,Ok 了:

www@ubuntu4:~/ffmpeg_videos/zephir-framework/zephirlib$ zephir build
Compiling...
Installing...
Extension installed!
Add extension=zephirlib.so to your php.ini

PHP7 學習筆記(七)如何使用zephir編譯一個擴展記錄