交叉编译php



我正在尝试为arm交叉编译php,并取得了良好的进展,但我完全被它想运行php本身的地方卡住了(不知道为什么(。因为它是arm二进制文件,而不是intel(我的构建平台(,所以它不会运行:

/bin/sh: /path-to-build/sapi/cli/php: cannot execute binary file

我该怎么解决这个问题?配置脚本理解我在交叉编译,但没有对此做任何操作(从配置日志(:

checking whether the C compiler (/path-to-compiler/arm-none-linux-gnueabi-gcc) is a cross-compiler... yes

我正在用配置命令行编译php-5.3.6

export CC=/path-to-cc/arm-none-linux-gnueabi-gcc
../configure --prefix=/prefix-path/ --host=arm-none-linux-gnueabi
             --disable-libxml --disable-dom --disable-openssl
             --without-iconv --without-openssl --disable-simplexml
             --disable-xml --disable-xmlreader --disable-xmlwriter
             --without-pear --without-sqlite --without-sqlite3
             --disable-pdo --without-pdo-sqlite

我能够通过禁用phar自行解决此问题。我希望禁用这么多模块不会破坏内部的一些东西。

在不进行交叉编译的情况下构建,然后在交叉编译时,通过在运行make时重写命令行上makefile中的变量来指向php的主机版本。

类似于:

make PHP_VAR_NAME=path to php built for host

我用以下参数为arm编译了PHP:

export PATH="$PATH:/toolchains/gnu_cortex-a9_tools/usr/bin" 
export ARCH=arm

配置脚本:

./configure --build=x86_64-unknown-linux-gnu --host=arm-linux-uclibcgnueabi --prefix=/usr/arm CC="arm-linux-uclibcgnueabi-gcc --sysroot=/toolchains/gnu_cortex-a9_tools/"  --disable-libxml --disable-dom  --without-iconv --without-openssl --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear --without-sqlite3 --disable-pdo --without-pdo-sqlite --disable-phar

然后是

make

在交叉编译PHP 5.6.0时,我在运行configure脚本后编辑了Makefile,从而解决了类似的问题。只需替换所有出现的

$(top_builddir(/$(SAPI_CLI_PATH(

带有

/usr/bin/php

其中/usr/bin/php是您的主机php-cli。确保它已安装,例如,用于Debian/Ubuuntu的sudo apt-get install php5-cli

这样做之后,phar扩展构建了良好的

相关内容

  • 没有找到相关文章

最新更新