安装skywalking-php-sdk执行make时遇C99模式编译报错求助
解决skywalking-php-sdk编译时的C99模式错误
这个错误的核心原因是:代码在for循环的初始化语句里直接声明了变量,但默认编译标准不是C99——C99之前的C语言标准不允许这种写法。
有两种可行的解决办法:
方法一:修改编译选项,启用C99模式
- 直接在执行
make命令时追加编译参数:make CFLAGS="-std=c99" - 或者找到项目的Makefile,在
CFLAGS配置项中添加-std=c99(如果需要保留GNU扩展特性,也可以用-std=gnu99),修改后再执行make。
方法二:修改报错代码
- 打开报错文件
/root/skywalking-5.0.1/src/sky_core_log.c,定位到第66行的for循环 - 将循环内声明的变量移到循环外部,比如把:
修改为:for (int i = 0; i < some_len; i++) { // 循环逻辑 }int i; for (i = 0; i < some_len; i++) { // 循环逻辑 } - 保存文件后重新执行
make即可。
内容的提问来源于stack exchange,提问作者HHawaii
相关产品推荐
相关产品推荐

