【问题标题】:PHP7 does not compile on arm64 (OrangePI PC2)PHP7 无法在 arm64 (OrangePI PC2) 上编译
【发布时间】:2016-12-24 21:57:56
【问题描述】:

我正在尝试在 Orange PI PC2 上编写一个需要 pthreads 的 PHP 程序。 pthreads 需要 zts,它通常不包含在 PHP 中,但在构建时很容易添加。

不幸的是,我在尝试构建 PHP 7 时收到以下错误。我尝试了 7.0.14 和 7.1。这一切都在树莓派(不是 64 位)上完美运行。有谁知道如何解决这个错误?

orangepi@Orangepi:~/php-7.1.0$ make -j2
/bin/bash /home/orangepi/php-7.1.0/libtool --silent --preserve-dup-deps --mode=compile /home/orangepi/php-7.1.0/meta_ccld -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/home/orangepi/php-7.1.0/ext/opcache/ -DPHP_ATOM_INC -I/home/orangepi/php-7.1.0/include -I/home/orangepi/php-7.1.0/main -I/home/orangepi/php-7.1.0 -I/home/orangepi/php-7.1.0/ext/date/lib -I/usr/include/libxml2 -I/home/orangepi/php-7.1.0/ext/sqlite3/libsqlite -I/home/orangepi/php-7.1.0/TSRM -I/home/orangepi/php-7.1.0/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS -DZEND_SIGNALS    -c /home/orangepi/php-7.1.0/ext/opcache/ZendAccelerator.c -o ext/opcache/ZendAccelerator.lo 
/bin/bash /home/orangepi/php-7.1.0/libtool --silent --preserve-dup-deps --mode=compile /home/orangepi/php-7.1.0/meta_ccld -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/home/orangepi/php-7.1.0/ext/opcache/ -DPHP_ATOM_INC -I/home/orangepi/php-7.1.0/include -I/home/orangepi/php-7.1.0/main -I/home/orangepi/php-7.1.0 -I/home/orangepi/php-7.1.0/ext/date/lib -I/usr/include/libxml2 -I/home/orangepi/php-7.1.0/ext/sqlite3/libsqlite -I/home/orangepi/php-7.1.0/TSRM -I/home/orangepi/php-7.1.0/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS -DZEND_SIGNALS    -c /home/orangepi/php-7.1.0/ext/opcache/zend_accelerator_blacklist.c -o ext/opcache/zend_accelerator_blacklist.lo 
mkdir: cannot create directory 'ext/opcache/.libs': File exists
/bin/bash /home/orangepi/php-7.1.0/libtool --silent --preserve-dup-deps --mode=compile /home/orangepi/php-7.1.0/meta_ccld -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/home/orangepi/php-7.1.0/ext/opcache/ -DPHP_ATOM_INC -I/home/orangepi/php-7.1.0/include -I/home/orangepi/php-7.1.0/main -I/home/orangepi/php-7.1.0 -I/home/orangepi/php-7.1.0/ext/date/lib -I/usr/include/libxml2 -I/home/orangepi/php-7.1.0/ext/sqlite3/libsqlite -I/home/orangepi/php-7.1.0/TSRM -I/home/orangepi/php-7.1.0/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS -DZEND_SIGNALS    -c /home/orangepi/php-7.1.0/ext/opcache/zend_accelerator_debug.c -o ext/opcache/zend_accelerator_debug.lo 
/bin/bash /home/orangepi/php-7.1.0/libtool --silent --preserve-dup-deps --mode=compile /home/orangepi/php-7.1.0/meta_ccld -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/home/orangepi/php-7.1.0/ext/opcache/ -DPHP_ATOM_INC -I/home/orangepi/php-7.1.0/include -I/home/orangepi/php-7.1.0/main -I/home/orangepi/php-7.1.0 -I/home/orangepi/php-7.1.0/ext/date/lib -I/usr/include/libxml2 -I/home/orangepi/php-7.1.0/ext/sqlite3/libsqlite -I/home/orangepi/php-7.1.0/TSRM -I/home/orangepi/php-7.1.0/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS -DZEND_SIGNALS    -c /home/orangepi/php-7.1.0/ext/opcache/zend_accelerator_hash.c -o ext/opcache/zend_accelerator_hash.lo 
/bin/bash /home/orangepi/php-7.1.0/libtool --silent --preserve-dup-deps --mode=compile /home/orangepi/php-7.1.0/meta_ccld -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/home/orangepi/php-7.1.0/ext/opcache/ -DPHP_ATOM_INC -I/home/orangepi/php-7.1.0/include -I/home/orangepi/php-7.1.0/main -I/home/orangepi/php-7.1.0 -I/home/orangepi/php-7.1.0/ext/date/lib -I/usr/include/libxml2 -I/home/orangepi/php-7.1.0/ext/sqlite3/libsqlite -I/home/orangepi/php-7.1.0/TSRM -I/home/orangepi/php-7.1.0/Zend  -D_REENTRANT  -I/usr/include -g -O2 -fvisibility=hidden -pthread -DZTS -DZEND_SIGNALS    -c /home/orangepi/php-7.1.0/ext/opcache/zend_accelerator_module.c -o ext/opcache/zend_accelerator_module.lo 
/tmp/ccuWeYfe.s: Assembler messages:
/tmp/ccuWeYfe.s:951: Error: operand 3 should be an integer register -- `mul x1,x1,1048576'
/tmp/ccuWeYfe.s:952: Error: operand 3 should be an integer register -- `smulh x0,x1,1048576'
Makefile:1000: recipe for target 'ext/opcache/zend_accelerator_module.lo' failed
make: *** [ext/opcache/zend_accelerator_module.lo] Error 1
make: *** Waiting for unfinished jobs....

我到处搜索,只找到了一个类似的文档issue,但仍然无法超越。

【问题讨论】:

  • 仅供参考 - 在这个愚蠢的问题出现 2 天后,我通过删除 ext/opcache 和一个“/buildconf --force”通过了它。这清楚地删除了可能导致性能问题的 opcache,但我的目的只是 CLI。一切正常,但是,我很想看看是否有真正的解决方法。
  • 我维护了 nextcloud snap(你链接到的),我在 7.0.14 和 7.1 中都得到了相同的结果。我们被困在 7.0.12 上。我也没有运气解决它。
  • logged a bug against PHP,也许他们有一些建议。

标签: php arm64


【解决方案1】:

Bug #73898,这已在 7.0.15 和 7.1.1 中修复(我刚刚验证了两者)。

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    相关资源
    最近更新 更多