交叉编译php8.2.5和apache2.4.57

PHP8尝试

编译xml

依赖automake 高版本
automake-1.16.3
./configure 
make
make install
automake --version

安装python2.7-dev
apt-get install python2.7-dev

需要pgk依赖
find / -name "pkg.m4"
export ACLOCAL_PATH=/usr/share/aclocal

添加libsqlite3
find / -name libsqlite3.so
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH

./autogen.sh
./configure --prefix=/home/zfadmin/xml2_v211/arm --without-python --without-zlib --host=arm-linux-gnueabihf

php:
    编译php必要加 --enable-session,不然没有办法调用redis
    编译完xml后需要在命令行中设置LDFLAGS 变量:  export LDFLAGS="-L/home/zfadmin/xml2_v211/arm/lib"
./configure --prefix=/home/zfadmin/php825/arm --host=arm-linux-gnueabihf  --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm --without-sqlite3  --disable-all 

尝试解决libphp8.so
./configure --prefix=/home/zfadmin/php825/arm2 --with-apxs2=/home/zfadmin/httpdCompile/arm/bin/apxs --host=arm-linux-gnueabihf  --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm --without-sqlite3 --disable-all

尝试解决mysqli

先手动交叉编译zlib
export CC=arm-linux-gnueabihf-gcc
export AR=arm-linux-gnueabihf-ar
export RANLIB=arm-linux-gnueabihf-ranlib
export LD=arm-linux-gnueabihf-ld

CPPFLAGS="-fPIC" ./configure --prefix=/home/zfadmin/php825/zlib/arm2  --static

export CPPFLAGS="-I/home/zfadmin/php825/zlib/arm/include"
export LDFLAGS="-L/home/zfadmin/xml2_v211/arm/lib -L/home/zfadmin/php825/zlib/arm/lib"

手动交叉编译sqlite3
./configure  CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/home/zfadmin/php825/sqllit3/arm

编译php

export CPPFLAGS="-I/home/zfadmin/php825/zlib/arm3/include -I/home/zfadmin/php825/sqllit3/arm/include"
export LDFLAGS="-L/home/zfadmin/xml2_v211/arm/lib -L/home/zfadmin/php825/zlib/arm3/lib -L/home/zfadmin/php825/sqllit3/arm/lib"

第一次
./configure --prefix=/home/zfadmin/php825/arm3 --with-apxs2=/home/zfadmin/httpdCompile/arm3/bin/apxs --host=arm-linux-gnueabihf  --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm  --with-mysqli --with-sqlite3=/home/zfadmin/php825/sqllit3/arm --with-zlib=/home/zfadmin/php825/zlib/arm3 --disable-phar --without-pear

第二次

./configure --prefix=/home/zfadmin/php825/arm4 --with-apxs2=/home/zfadmin/httpdCompile/arm3/bin/apxs --host=arm-linux-gnueabihf  --enable-session --with-libxml=/home/zfadmin/xml2_v211/arm  --with-mysqli  --without-sqlite3 --with-zlib=/home/zfadmin/php825/zlib/arm3 --disable-phar --without-pear

编译mysqli.so
cd ./ext/mysqli
/home/zfadmin/php825/arm4/bin/phpize
CC=arm-linux-gnueabihf-gcc ./configure --with-php-config=/home/zfadmin/php825/arm4/bin/php-config --with-mysqli=mysqlnd --host=arm-linux-gnueabihf


phpredis:
    cd /home/zfadmin/phpredis537/redis-5.3.7/redis-5.3.7
    make clean; make disclean;
    /home/zfadmin/php825/arm4/bin/phpize
    CC=arm-linux-gnueabihf-gcc ./configure --with-php-config=/home/zfadmin/php825/arm4/bin/php-config --host=arm-linux-gnueabihf --enable-redis

    
编译php的sockets
    --enable-sockets

在Arm板上需要将php.ini路径加入到环境变量    
export PHP_INI_SCAN_DIR=/opt/web/php-8.2.5-armv7/lib

编译apache 2.4.57

编译pcre2源码并安装
./configure --prefix=/home/zfadmin/httpdCompile/pcre2_arm --host=arm-linux-gnueabihf
需要下载apr和apr-ultra放到srclib下,注意拷贝过去不能带版本号
遇到run test的编译错误就把configure目录下的run test段落注释掉就行,一共有3处

需要编译 pcre2

需要编译安装 libexpat

需要编译openssl 1.1.1
./Configure --prefix=/home/zfadmin/httpdCompile/opensslArm/ linux-elf no-shared shared no-zlib no-asm no-threads no-sse2 no-rfc3779 no-rc5 no-zlib-dynamic no-hw no-md2 no-mdc2 no-rc2 no-idea no-camellia no-ec no-ripemd no-bf no-cast --cross-compile-prefix=arm-linux-gnueabihf-

安装apache
--enable-so选项可以使接下来编译php8可指定apxs目录,如不用php可不加
如果php8没有编译成线程安全的版本则需要--with-mpm=prefork --enable-mpms-shared=all

CFLAGS="-pthread" CXXFLAGS="-pthread" ./configure --with-expat=/home/zfadmin/httpdCompile/expatArm --with-mpm=prefork --enable-mpms-shared=all --enable-so --with-ssl=/home/zfadmin/httpdCompile/opensslArm --prefix=/home/zfadmin/httpdCompile/arm CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --with-pcre=/home/zfadmin/httpdCompile/pcre2_arm/bin/pcre2-config --with-included-apr ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes ap_cv_void_ptr_lt_long=no ac_cv_struct_rlimit=yes

提示gen_test_char
    进入到/home/zfadmin/httpdCompile/httpd-2.4.57/server 目录
    执行gcc -Wall -O2 -DCROSS_COMPILE gen_test_char.c -s -o gen_test_char
    再执行./gen_test_char > test_char.h
    然后继续make

Action application/x-httpd-php "/opt/web/php-8.2.5-armv7/bin/php-cgi"

先编译apache,才能再编译php8,因为php8在编译的时候需要指定--with-apxs2=/home/zfadmin/httpdCompile/arm/bin/apxs的目录才行,注意要么把php8编译成线程安全的,要么编译出来一个单线程的apache


出现AH00534: httpd: Configuration error: More than one MPM loaded 
    在httpd.conf中加上Include conf/extra/httpd-mpm.conf。httpd.conf中不加任何mpm模块
    在httpd-mpm.conf 中只保留关于 mpm_prefork_module的一小段,其余全部注释
    
./httpd -f /opt/web/apache-2.4.57-armv7/conf/httpd.conf

export LD_LIBRARY_PATH=/usr/local/qt-4.8.6/plugins
export LD_LIBRARY_PATH=/usr/local/qt-4.8.6/lib


提示找不到QMYSQL驱动,需要把mysql客户端安装路径下的lib依赖环境设置到/etc/profile中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LanSe___

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值