CentOS7源码安装PHP遇strtok_r编译报错,求源码安装解决方案
解决CentOS7源码编译PHP时strtok_r编译错误的方案
问题原因
CentOS7系统的glibc库已原生定义strtok_r函数,而PHP源码的php_reentrancy.h文件中重复声明了该函数,导致编译时符号冲突。
解决步骤
- 编辑PHP源码目录下的头文件:
vi /root/php-8.3.7/main/php_reentrancy.h - 定位到第98行的
char *strtok_r(char *s, const char *delim, char **last);声明,将其注释或直接删除。 - 保存文件后,重新执行
make命令继续编译。
补充优化(可选)
若担心后续版本出现类似问题,可在该声明前添加条件编译判断,避免重复定义:
#ifndef HAVE_STRTOK_R char *strtok_r(char *s, const char *delim, char **last); #endif
CentOS7默认已定义HAVE_STRTOK_R宏,因此直接注释原声明即可解决当前问题。
内容的提问来源于stack exchange,提问作者Lau Ming Wei Bret
相关产品推荐
相关产品推荐

