linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许

解决方法:

1. 先清理掉之前失败的编译残留

cd /home/soft/openresty-1.31.1.1/

gmake clean

2. 下载一个稳定好用的 OpenSSL 1.1.1w 源码包(推荐这个版本,兼容性极好)

wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz

3. 解压 OpenSSL 源码

tar -xzf openssl-1.1.1w.tar.gz

4. 再次配置 OpenResty!

重点:添加了 --with-openssl=... 参数,并加上 -std=gnu99 和 -fPIC 解决之前所有问题

./configure --prefix=/usr/local/openresty \

--with-cc-opt="-std=gnu99 -fPIC" \

--with-openssl=/home/soft/openresty-1.31.1.1/openssl-1.1.1w

5. 开始多线程编译

gmake

如果还有异常,需要操作如下:

1. 进入 lua-cjson 的源码目录

cd /home/soft/openresty-1.31.1.1/build/lua-cjson-2.1.0.17

2. 使用 sed 命令直接修改 C 源代码 (把 C99 的循环声明改成 C90 的写法)

sed -i 's/for (int i = 0; i < depth; i++)/int i; for (i = 0; i < depth; i++)/g' lua_cjson.c

再操作: gmake 完成,gmake install

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读3 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie3 天前
Linux进程控制四大核心操作
linux·开发语言
Brilliantwxx3 天前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件