php是一門強(qiáng)大的語(yǔ)言梳杏,在這里我就不多做介紹了滋尉,其實(shí)關(guān)于在php源碼中加入擴(kuò)展庫(kù)并且實(shí)現(xiàn)靜態(tài)編譯的方法在 php官網(wǎng) 中已有介紹拧揽,但是還是有一些細(xì)節(jié)需要我們注意的休里,下面以libevent
為例具體看一下在php中加入擴(kuò)展庫(kù)并實(shí)現(xiàn)靜態(tài)交叉編譯的過(guò)程富腊。
關(guān)于php的靜態(tài)交叉編譯推薦看eechen的一篇博文 “64位Ubuntu 14.04上使用musleabi最小化交叉編譯Android版PHP7”坏逢,里面有一個(gè)詳細(xì)的配置文檔,經(jīng)過(guò)實(shí)踐在i386和i86_64的pc上都能成功編譯赘被。
編譯php擴(kuò)展庫(kù)需要兩個(gè)文件:擴(kuò)展庫(kù)源程序和源碼是整,我用的是libevent-release-1.4.15-stable.tar.gz
,首先根據(jù)類似php中一些其他庫(kù)相關(guān)配置對(duì)其進(jìn)行編譯:
cd /opt/phpdroid/src/libevent-release-1.4.15-stable
./autogen.sh
CFLAGS="--sysroot=$SYSROOT_MUSL -Os" \
./configure \
--prefix="/opt/phpdroid/deps" \
--host=$HOST
time make
make install
這個(gè)一般都不會(huì)出錯(cuò)民假,可以檢查在相關(guān)的prefix路徑中是否已經(jīng)生成了一些libevent靜態(tài)動(dòng)態(tài)編譯文件贰盗,接下來(lái)開始在php的配置文件中添加libevent編譯配置,
cd /opt/phpdroid/src/php-7.0.9/ext阳欲,
git clone https://github.com/expressif/pecl-event-libevent.git (沒(méi)有使用官網(wǎng)上的擴(kuò)展庫(kù)源碼是因?yàn)樵诰幾g的過(guò)程中報(bào)錯(cuò))舵盈,
mv pecl-event-libevent libevent && cd libevent
cd /opt/phpdroid/src/php-7.0.9 && rm configure && ./buildconf –force
./configure –help | grep libevent
( --with-libevent Include libevent support )
發(fā)現(xiàn)是使用–with-libevent
將libevent支持加入交叉編譯配置中,將其加入配置然后./configure \…
( 后面根據(jù)自己項(xiàng)目需要進(jìn)行配置 )球化,運(yùn)行成功見下圖:

運(yùn)行命令 time make && make install
秽晚,得到下面輸出:

測(cè)試將編譯好的php加入到android系統(tǒng)下的目錄/system/bin/
中,運(yùn)行命令php –m
查看php中包含的modules筒愚,發(fā)現(xiàn)libevent已經(jīng)成功編譯入php:
