php 移植 arm 精简,arm linux 移植 PHP

背景:

PHP 是世界上最好的语言,所以要考虑php的移植。

host平台   :Ubuntu 16.04

arm平台   : 3531d

arm-gcc   :4.9.4

主机准备:

使用以下脚本

##

# 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-hisiv500-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

}

download_package () {

cd ${BASE}/compressed

wget http://mirrors.sohu.com/php/${PHP}.tar.gz

wget -c https://www.zlib.net/${ZLIB}.tar.gz

wget -c http://distfiles.macports.org/libxml2/${XML2}.tar.gz

wget 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.

标签:enable,make,BASE,INSTALL,linux,PHP,FIN,arm,php

来源: https://www.cnblogs.com/schips/p/12170702.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础篇3——流程控制

Java基础篇3——流程控制 1、顺序结构 正常代码的流程即是顺序流程 2、分支结构 2.1、if-else分支 if(条件表达式) {语句块1; }if(条件表达式) {语句块1; } else {语句块2; }if(条件表达式1) {语句块1; } else if(条件表达式2) {语句块2; } else {语句块3; }2.2、switc…

hive mysql类型,(二)Hive数据类型、数据定义、数据操作和查询

1.数据类型1.1 基本数据类型Hive数据类型长度例子TINYINT1byte有符号整数20SMALINT2byte有符号整数20INT4byte有符号整数20BIGINT8byte有符号整数20BOOLEAN布尔类型,true或者falseTRUE FALSEFLOAT单精度浮点数3.14159DOUBLE双精度浮点数3.14159STRING字符系列。可以…

Error running tomcat8 Address localhost:1099 is already in use 错误解决

错误情况: 在IDEA上运行web项目时报错:Error running (项目名) Address localhost:1099 is already in use 解决方法: 第一步:打开Windows运行,如下图 第二步:按下回车或点击确定…

matlab数据处理 书,matlab数据处理记录

最近在看一篇论文,觉得文章的数据处理效果十分的惊艳!所以想着如何用matlab将类似的效果实现出来,但最近有一个任务,以后慢慢更新吧!先挖一个坑!1. 二维图形绘制二维坐标轴图像涉及的部分包含曲线的颜色、点…

StringUtils系列之StringUtils.isNotBlank()和StringUtils.isNotBlank()的区别

/** 1.* StringUtils.isNotBlank();* 判断参数是否不为空.* 1.如果不为空返回true。* 2.如果为空返回false。* StringUtils.isNotEmpty(null) -> false* StringUtils.isNotEmpty("") -> false* StringUtils.isNotEmpty("a") -> true* StringUti…

matlab信号内插,基于VC++和Matlab的数字信号内插处理系统

0引言目前,利用并行交替式(Parallalinterleaving)技术,超高速数字化示波器的实时采样速率已突破了10Gsa/s。按照Nyquist定理,这种系统的实时带宽可接近5GHz。在数字化示波器中,由实时采样获得的样本数据原封不动地显示时,因采样理论和显示技术等缘故,可能会产生不同形式的视觉混…

MySQL-locate()函数

判断字符串(string)中是否包含另一个字符串(subStr)locate(subStr,string) :函数返回subStr在string中出现的位置 // 如果字符串 string 包含 subStr locate(subStr,string) > 0// 如果字符串 string 不包含 subSt…

MATLAB接收机位置解算,GPS-receiver GPS软件接收机代码 完整的捕获 解算定位 (可 8个通道) matlab 240万源代码下载- www.pudn.com...

文件名称: GPS-receiver下载 收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 148 KB上传时间: 2015-07-02下载次数: 0提 供 者: 金亚强详细说明:GPS软件接收机代码 完整的捕获接受解算定位代码(可接受8个通道)-GPS software receiver codes文件列表(点击判断是…

Java基础篇4——数组

Java基础篇4——数组 1、数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是在内存空间中申请一段连续的存储单元数组是相同…

python php ajax赔率,Ajax如何调用python脚本

用Flask很简单的:比如:index.html 放到templates文件夹下:$(function() {$(#calculate).click(function(){$.ajax({url: /addnumber,data:{a: $(#a).val(),b: $(#b).val()},dataType: JSON,type: GET,success: function(data){$("#result").ht…

Java面向对象编程篇1——类与对象

Java面向对象编程篇1——类与对象 1、面向过程 1.1、概念 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了 1.2、优缺点 优点:性能比面向对象高,因为类调用时…

python中发送带附件的邮件,python SMTP实现发送带附件电子邮件

本文实例为大家分享了python SMTP发送带附件电子邮件的具体代码,供大家参考,具体内容如下可采用email模块发送电子邮件附件。发送一个未知MIME类型的文件附件其基本思路如下:1. 构造MIMEMultipart对象做为根容器2. 构造MIMEText对象做为邮件显…

Java面向对象编程篇2——面向对象三大特点

Java面向对象编程篇2——面向对象三大特点 1、封装 1.1、封装的概念 通常情况下可以在测试类给成员变量赋值一些合法但不合理的数值,无 论是编译阶段还是运行阶段都不会报错或者给出提示,此时与现实生活不符 为了避免上述错误的发生,就需…

易语言php支付宝,支付宝填表登录易语言源码

支付宝填表登录易语言源码MS_晨星天宇.版本 2.支持库 spec.支持库 HtmlView.程序集 窗口程序集_窗口1.子程序 _按钮1_被单击调试输出 (开始登录 (超文本浏览框1, “”, “”)).子程序 开始登录, 文本型.参数 超文本浏览框, 超文本浏览框.参数 账号, 文本型.参数 密码, 文本型.参…

mybatis常用jdbcType数据类型

1 MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINEDTINYINT REAL VARCHAR BINARY BLOB NVARCHARSMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHARIN…

oracle 查询所有组合,Oracle的组合条件查询

组合条件查询,以下两种方式都可以:select b.job_id,b.source,b.create_via,b.who_create,b.location_code,b.ref_nofrom (select rownum r, a.*from (select j.*, cj.location_code, cj.ref_nofrom nfs_gbl.combine_job j, nfs_gbl.combine_job_criteria…

Java面向对象编程篇3——接口与抽象类

Java面向对象编程篇3——接口与抽象类 1、接口(interface) 接口中可以含有变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译…

oracle sql语句 只读,Oracle_SQL语句

------------------------Oracle 的SQL 语法--------------------------第(1,2)章 结 合 语 句》1:创建表空间create tablespace 表空间名datafile存放文件的路径_空间名_.dbf size 30m;》2: 分配权限grant 权限| 角色 to 用户名》3: 创建用户create use…

Java面向对象编程篇4——内部类

Java面向对象编程篇4——内部类 1、内部类的概念 当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类 (Inner),而这个内部类所在的类叫做外部类(Outer)。 类中的内容:成员变量、…

oracle中$的用法,关于expdp 中query用法小结

今天看到群里有人问到关于在使用expdp导出数据中使用query参数报错的解决方法,自己也出于好奇心瞎折腾了一把,现记录如下1.第一次尝试的时候[oracleDB ~]$ expdp scott/scott tablesemp1 dumpfileemp1.dmp logfileemp1.log queryemp1:"where rownum…