背景:

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. 人工神经网络(从原理到代码) Step 01 感知器 梯度下降

    版权声明: 本文由SimonLiang所有,发布于http://www.cnblogs.com/idignew/.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 感知器 ...

  2. IIS 配置迁移

    使用管理员身份运行cmd 应用程序池: # 导出所有应用程序池 %windir%\system32\inetsrv\appcmd list apppool /config /xml > c:\a ...

  3. selenium webdriver 执行Javascript

    @Test public void testElementByID() { //通过JS获取页面元素 driver.get(url); driver.manage().window().maximiz ...

  4. Myeclipse创建HTML文件中文显示乱码问题

    例如 运行结果 错误原因 不同浏览器的,编码格式不同 解决方法 运行结果 通常charset的设值我们常用的有gb2312,gbk,utf-8三种,即有三种编码规定: <meta http-eq ...

  5. 用IDEA创建项目时没有Spring类型的项目模板

    使用的版本:2019.2.2 Community 解决方法:File=>Setting=>Plugins=>搜索Spring,安装Spring Assistant=>重启IDE ...

  6. Can you answer these queries?-HDU4027 区间开方

    题意: 给你n个数,两个操作,0为区间开方,1为区间求和 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027 思路: 如果当该区间的数都为1,我们没必要 ...

  7. Servlet 学习(九)

    Listener 1.功能 Servlet 2.3 中新增加的另一个功能 作用是监听Java Web 程序中的事件 对应设计模式中的Listener 模式,当事件发生的时候会自动触发该事件对应的Lis ...

  8. 重新学习CSS,认识CSS3中的属性

    之前学css,觉得会改个样式就不错了,直到现在,在做前端开发的时候,才发现自己的前端页面是有多垃圾,而且还不知道该怎么适应各个浏览器,总是很“词穷”,最近是想着好久没去慕课上面了,于是就报着逛一逛的心 ...

  9. java后端开发echarts

    参考: https://blog.csdn.net/mxdmojingqing/article/details/77340245 https://github.com/abel533/ECharts

  10. Java基础 -5.2

    方法重载 当方法名称相同,参数的类型或者个数不同的时候 就会称为方法重载. public static void main(String[] args) { System.out.println(ad ...