背景:

PHP 是世界上最好的语言。

host平台   :Ubuntu 16.04

arm平台   : 3531d

arm-gcc   :4.9.4

php     :7.1.30

zlib     :1.2.11

libxml2   : 2.9.9

libiconv   :1.15

主机准备:

使用以下脚本

##
# Copyright By Schips, All Rights Reserved
# https://gitee.com/schips/
# File Name: make.sh
# Created : Fri 22 Nov 2019 10:38:53 AM CST
##
#!/bin/sh
HOST=arm-linux
PHP=php-7.1.30
ZLIB=zlib-1.2.11
XML2=libxml2-2.9.9
ICONV=libiconv-1.15 FIN_INSTALL=/usr/${PHP} BASE=`pwd`
OUTPUT_PATH=${BASE}/install
ARM_GCC=${HOST}-gcc make_dirs () {
cd ${BASE}
mkdir compressed install source -p
} tget () { #try wget
filename=`basename $1`
echo "Downloading [${filename}]..."
if [ ! -f ${filename} ];then
wget $1
fi echo "[OK] Downloaded [${filename}] "
} download_package () {
cd ${BASE}/compressed
tget http://mirrors.sohu.com/php/${PHP}.tar.gz
tget https://www.zlib.net/${ZLIB}.tar.gz
tget http://distfiles.macports.org/libxml2/${XML2}.tar.gz
tget http://ftp.gnu.org/pub/gnu/libiconv/${ICONV}.tar.gz
} tar_package () {
cd ${BASE}/compressed
ls * > /tmp/list.txt
for TAR in `cat /tmp/list.txt`
do
tar -xf $TAR -C ../source
done
rm -rf /tmp/list.txt
} make_zlib () {
cd ${BASE}/source/${ZLIB}
CC=${ARM_GCC} ./configure --prefix=${OUTPUT_PATH}/${ZLIB} && make && make install
} make_xml2 () {
cd ${BASE}/source/${XML2} ./configure \
--without-zlib \
--without-lzma \
--without-python \
--prefix=${OUTPUT_PATH}/${XML2} \
--host=${HOST} && make && make install
} make_iconv () {
cd ${BASE}/source/${ICONV} ./configure --host=${HOST} \
--prefix=${OUTPUT_PATH}/${ICONV} && make && make install
} configure_php () {
cd ${BASE}/source/${PHP}
./configure \
--prefix=${FIN_INSTALL} \
--host=${HOST} \
--libdir=/tmp \
--datadir=/tmp \
--includedir=/tmp \
--oldincludedir=/tmp \
--datarootdir=/tmp \
--sharedstatedir=/tmp \
--libexecdir=${FIN_INSTALL}/libexec \
--with-config-file-path=${FIN_INSTALL}/etc \
--localstatedir=${FIN_INSTALL}/var \
--bindir=${FIN_INSTALL}/bin \
--sbindir=${FIN_INSTALL}/sbin \
--sysconfdir=${FIN_INSTALL}/etc \
--runstatedir=${FIN_INSTALL}/var/run \
--with-config-file-scan-dir=${FIN_INSTALL}/etc/php-fpm.d \
--disable-all \
--disable-phpdbg \
--enable-cgi \
--enable-json \
--enable-posix \
--enable-pcntl \
--enable-session \
--enable-fpm \
--enable-libxml \
--enable-dom \
--enable-hash \
--with-sqlite3 \
--enable-zip \
--enable-ctype \
--enable-simplexml \
--with-zlib=${OUTPUT_PATH}/${ZLIB} \
--with-libxml-dir=${OUTPUT_PATH}/${XML2} \
--with-iconv-dir=${OUTPUT_PATH}/${ICONV} \
--enable-xml \
--enable-mbstring \
--enable-xmlreader && echo "${FIN_INSTALL} with ${HOST}" > readme
} make_php () {
cd ${BASE}/source/${PHP}
make -j4 && sudo make install && sudo mv readme ${FIN_INSTALL}/readme
sudo mv ${FIN_INSTALL} ${OUTPUT_PATH}/${PHP}
cd ${BASE}/install/${PHP}/ && sudo rm lib php -rf
cd ${BASE}
}
make_dirs
sudo ls
#download_package
tar_package
make_zlib
make_xml2
make_iconv
configure_php
make_php

自此,编译完成

arm板准备

将php依赖的动态库zlib,libxml2 ,libiconv移动到开发板中(注意软连接的保持)。

测试(在arm板子上)

进入php/bin

./php -i

此后,可以进行与nginx搭配等配置(略)

附录:优化体积的可选步骤

strip处理:

${HOST}-strip php

UPX处理:

upx php

​            Ultimate Packer for eXecutables

​             Copyright (C) 1996 - 2013

UPX 3.91    Markus Oberhumer, Laszlo Molnar & John Reiser  Sep 30th 2013

​    File size     Ratio   Format   Name

--------------------  ------  -----------  -----------

  3679836 ->  1357148  36.88%  linux/armel  php             

Packed 1 file.

arm linux 移植 PHP的更多相关文章

  1. arm linux 移植 x265

    背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...

  2. Linux 安装 go 以及 arm linux 移植 go

    背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...

  3. arm linux 移植 MQTT (paho、mosquitto)

    前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...

  4. arm linux 移植 ffmpeg 库 + x264

    背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...

  5. arm linux 移植支持 HP打印机

    背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...

  6. arm linux 移植 gdb/gdbserver

    背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...

  7. arm linux 移植 udhcp 与 使用

    背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...

  8. arm linux 移植 rsync

    背景: 在产品开发中可以使用rsync进行大文件的拷贝,断点续传. host平台 :Ubuntu 16.04 arm平台 : 3531d   rsync   :3.1.3 arm-gcc :4.9.4 ...

  9. arm linux 移植 jpeg

    背景: host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚本: ## # Copyright By Sc ...

随机推荐

  1. Trie图(AC自动机)总结

    AC自动机构建完成后,某个节点沿着Fail链向上能从长到短走到自己的所有后缀.一般的,遍历主串进行匹配,就是在Trie图上定向移动的过程. 构造(一遍 BFS) void build_AC() { ; ...

  2. java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError

    这个问题确实是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误. 1.解决措施就是保证jvm(java命令)和jdk(javac命令)版本一致.如果是linux版 ...

  3. 关于Debug Assertion Failed问题

    书上代码: #include<stdio.h> #include<stdlib.h> /* 提供malloc().free()函数 */ #include<string. ...

  4. uniGUI之通过URL控制参数(25)

    通过URL代入参数,在代码中读取,如: http://localhost:8077/?ServerPort=212&&ServerIP=192.168.31.12 procedure ...

  5. TortoiseGit 安装与配置

    2. TortoiseGit安装与配置 标签: TortoiseGit安装配置Windows 2014-12-01 15:25 135739人阅读 评论(10) 收藏 举报 .embody{ padd ...

  6. poj1988 Cube Stacking(并查集

    题目地址:http://poj.org/problem?id=1988 题意:共n个数,p个操作.输入p.有两个操作M和C.M x y表示把x所在的栈放到y所在的栈上(比如M 2 6:[2 4]放到[ ...

  7. 下载安装charles并导入证书、使用

    抓包原理 1.截获真实客户端的 HTTPS请求,伪装客户端向真实服务端发送 HTTPS 请求. 2.接受真实服务器响应,用 Charles 自己证书伪装服务端向真实客户端发送内容 3.证书导入 看博客 ...

  8. (踩过的坑)使用Github Page搭建个人博客

    最近需要搭建一个网站,作为导航网址,但是自己的域名备案还要等上几天,就想着有没有别的办法来搭建一个公网可以访问的网站. Github Page的话是一个github个人主页,完全适合用来搭建普通网站. ...

  9. 4 Action的3种编写方式,pojo,实现和继承(推荐)

    Action的访问: 1 Action类是pojo(Plain Ordinary Java Object):简单Java对象,无接口,无继承.例如上篇文章中只创建了public String exec ...

  10. spring配置文件1

    applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?><beans xm ...