Centos6.8 编译 php8.2.14 出现 undefined reference to `u_sprintf_64'

问题背景

通过编译源码的方式升级 php 到 8.2.14

系统环境

系统版本:Centos 6.8
gcc版本:4.8.5
php升级的目标版本:8.2.14

遇到的问题

在编译国际化模块的时候,出现如下报错

ext/intl/msgformat/msgformat_helpers.o: In function `umsg_format_helper':

/mypath/ext/intl/msgformat/msgformat_helpers.cpp:413: undefined reference to `u_sprintf_64'

而报错位置的代码片段中并未引用此方法,而是调用了 *u_sprintf *

405     /* includes case where index < 0 because it's exposed as unsigned */
406     if (num_index > (zend_ulong)INT32_MAX) {
407         intl_errors_set(&err, U_ILLEGAL_ARGUMENT_ERROR,
408             "Found negative or too large array key", 0);
409         continue;
410      }
411
412      UChar temp[16];
413      int32_t len = u_sprintf(temp, "%u", (uint32_t)num_index);
414      key.append(temp, len);
415
416      storedArgType = (Formattable::Type*)zend_hash_index_find_ptr(types, (zend_ulong)num_index);

查阅了 Unicode 库的代码,并未在其中找到 u_sprintf_64 的声明
这个问题该如何解决?

最佳答案

感觉使用docker可以无视外部环境

1个月前 评论
qiaoba_xiaoliu (楼主) 1个月前
讨论数量: 4

感觉使用docker可以无视外部环境

1个月前 评论
qiaoba_xiaoliu (楼主) 1个月前

猜测可能是 gcc 版本太老导致的问题。。。

1个月前 评论
qiaoba_xiaoliu (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!