You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

树莓派V1编译带OpenSSL 1.1.0g支持的PHP7.2.2失败求助

解决树莓派V1编译PHP 7.2.2带OpenSSL 1.1.0g支持的问题

嘿,我之前在树莓派ARM设备上编译PHP搭配自定义OpenSSL版本时也踩过类似的坑,你遇到的make报错大概率是configure阶段没正确识别你自己编译的OpenSSL,或者编译时链接器找不到对应的库。下面是一步步的排查和解决方法:

1. 先清理旧编译残留,避免干扰

先回到PHP源码目录,清理之前编译生成的文件,重新生成配置脚本:

make clean
./buildconf --force

这一步很关键,之前错误的配置缓存可能会导致新的configure命令异常。

2. 移除可能混淆编译器的软链,明确指定OpenSSL路径

你之前把/usr/local/include/openssl软链到/usr/include/openssl,这反而可能让编译器优先调用系统默认的旧版本OpenSSL(而不是你编译的1.1.0g),先删掉这个软链:

sudo rm /usr/include/openssl

然后在configure命令里明确指定你自定义OpenSSL的安装根目录。如果你是默认编译安装OpenSSL 1.1.0g,它的默认路径应该是/usr/local/ssl(头文件在/usr/local/ssl/include/openssl,库在/usr/local/ssl/lib)。给你一个configure的示例模板,你可以把自己原本的参数加进去:

./configure \
--prefix=/usr/local/php72 \  # PHP的安装路径,可自行修改
--with-openssl=/usr/local/ssl \
--with-openssl-dir=/usr/local/ssl \
# 下面是你可能需要的其他参数,根据自己需求加
--enable-cli \
--with-curl \
--enable-mbstring

这里的--with-openssl--with-openssl-dir是关键,能让PHP的配置脚本精准定位到你编译的OpenSSL版本,而不是系统默认的。

3. 给编译工具指定OpenSSL库和头文件路径

如果configure成功了但make还是报错,大概率是链接器找不到OpenSSL的库文件。可以在编译前临时设置几个环境变量,告诉编译器去哪里找:

export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH
export LDFLAGS="-L/usr/local/ssl/lib"
export CPPFLAGS="-I/usr/local/ssl/include"

设置完这些后,再重新跑configure和make命令。

4. 适配树莓派V1的ARMv6架构

树莓派V1是ARMv6架构,编译时如果不指定架构参数,可能会出现编译错误。你可以在configure命令里加上架构指定:

--build=arm-linux-gnueabihf

或者提前设置CFLAGS环境变量做适配:

export CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard"

5. 检查configure输出,确认OpenSSL识别正常

执行完configure后,一定要看输出日志,找一找有没有类似下面的内容:

checking for OpenSSL version >= 1.0.1... yes
checking for CRYPTO_free in -lcrypto... yes
checking for SSL_library_init in -lssl... yes

如果有这些提示,说明configure已经正确识别你的OpenSSL 1.1.0g了;如果出现警告或者“no”,那就要检查你的OpenSSL路径是否正确,或者有没有编译安装完整。

按照上面的步骤重新尝试,应该能解决make报错的问题。如果还有具体的错误信息,可以贴出来,我再帮你精准排查。

内容的提问来源于stack exchange,提问作者MineBartekSA

火山引擎 最新活动