ホームページ >バックエンド開発 >PHPチュートリアル >musleabi を使用して、64 ビット Ubuntu 14.04 上の Android 用 PHP7 のクロスコンパイルを最小限に抑えます。
https://bitbucket.org/GregorR/musl-cross/downloads
crossx86-arm-linux-musleabi-0.9.11.tar.xz (20MB)
CC=arm-linux-musleabi-gcc
CXX=arm-linux-musleabi-g++
AR=arm-linux-musleabi-ar
LD=arm-linux-musleabi-ld
RANLIB=arm-linux-musleabi-ranlib
STRIP=arm-linux-musleabi-strip
CFLAGS="-Os"
CXXFLAGS="-Os"
./configure
--host=arm-linux-musleabi
--prefix=/opt/phpdroid/php
--disable-all
--enable- json
--enable-pdo
--with-sqlite3
--with-pdo-sqlite
PHP ソース コードには独自の PCRE ライブラリが付属しているため、コンパイル時に外部 PCRE ライブラリに依存する必要はありません。 PCRE ライブラリをコンパイルし、CPPFLAGS および LDFLAGS パラメーターを構成します:
CPPFLAGS="-I/png/dev/android/compiled/usr/include -I/png/dev/android/compiled/usr/usr/include"
LDFLAGS="- static -L/png/dev /android/compiled/usr/lib -L/png/dev/android/compiled/usr/usr/lib"
sed -i "s{/bin/sh{/system/bin/ sh{" ext/standard/ proc_open.c
sed -i "s{-export-dynamic{-all-static{" Makefile
欠落している sed -i "s{-export-dynamic{-all-static{" Makefileコンパイル後:
./php -v は -bash を返します: ./php: そのようなファイルまたはディレクトリはありません
ファイル ./php は php を返します: ELF 32 ビット LSB 実行可能ファイル、ARM、バージョン 1 (SYSV)、動的にリンク (共有を使用) libs)、ストリップ
通常、返されるはずです php: ELF 32 ビット LSB 実行可能ファイル、ARM、EABI5 バージョン 1 (SYSV)、静的にリンクされ、ストリップ
time nice -20 make -j2
make install
arm-linux-musleabi -strip /opt/phpdroid/php /bin/php
xz -z -k -9 /opt/phpdroid/php/bin/php
ストリップ後は 4MB 未満、xz 圧縮後は約 1MB
現在より 2.7MB 小さくなります。 3.7MB の php.xz、PHPDroid APK パッケージは 5.7MB から 3MB に削減できます。
ダウンロード: php-7.0.6-arm-linux.xz (1.1MB)
./php -m
[PHP モジュール]
コア
日付
json
pcre
PDO
pdo_sqlite
リフレクション
SPL
sqlite3
標準
./php -r 'print_r(get_dependent_functions());' func.txt
./php -r 'print_r(get_dec) lared_classes ());' > クラス。以下の一般的に使用される関数が含まれていることがわかります:
pdo_sqlite
json_encode/json_decode
file_get_contents/file_put_contents
注: OpenSSL をサポートしない場合、file_put_contents は HTTPS プロトコルをサポートしません。 ./php -r "file_put_contents('logo.gif ',file_get_contents('https://www.baidu.com/img/bdlogo.gif'));"