背景:

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. Shell函数!

    1.作用:将命令序列按格式写在一起,可方便重复使用命令序列2.Shell 函数定义格式:[ function ] 函数名(){命令序列[ return x ]}3.调用函数的方法:函数名 [ 参数 1 ...

  2. Android获取当前时间的3中方法总结

    今天听了一在线公开课,任务是做一个数字时钟,其中最关键的自然是获取当前的系统时间.做个简单的记录,如下: 1. Time time = new Time("GMT+8"); tim ...

  3. 【剑指Offer面试编程题】 题目1350:二叉树的深度--九度OJ

    题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 输入: 第一行输入有n,n表示结点数,结点号从1到n.根结点为1. ...

  4. (未解决)flume监控目录,抓取文件内容推送给kafka,报错

    flume监控目录,抓取文件内容推送给kafka,报错: /export/datas/destFile/220104_YT1013_8c5f13f33c299316c6720cc51f94f7a0_2 ...

  5. 谈谈spring mvc与struts的区别

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  6. CSS垂直居中的8种方法

    CSS垂直居中的8种方法 1.通过verticle-align:middle实现CSS垂直居中. 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注 ...

  7. linux搭建mysql时ifconfig命令无法使用问题

    刚搭建好的Centos 最小安装模式是没有ifconfig命令的.改变步骤:一:使用语句:cd /etc/sysconfig/network-scripts/二:使用语句vi ifcfg-eno167 ...

  8. 【Java】变量命名规范

    Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包.类.变量等的命名规范. (一)Package(包)的命名 P ...

  9. 134、Java中的构造方法和构造块

    01.代码如下: package TIANPAN; class Book { public Book() { // 构造方法 System.out.println("[A]Book类的构造方 ...

  10. Java小菜鸟的一些经历

    写在前面 自接触编程以来,从最初看到hello world显示成功时的激动,到现在看到代码大片报错时的无奈, 虽然只有短短一年左右的时间,但感觉自己经历颇多,于是,有了把自己的经历与经验分享给他人的想 ...