开发者社区> 问答> 正文

在AIX上编译zlog报错?报错

@难易 你好,想跟你请教个问题:

我在AIX6.1上编译zlog,报出如下的错误,请楼主指点一下

# /usr/local/bin/make
cd src && /usr/local/bin/make all
make[1]: Entering directory `/home/lizhe/zlog-latest-stable/src'
gcc -std=c99 -pedantic -c -O2 -fPIC  -Wall -Werror -Wstrict-prototypes -g -ggdb buf.c
gcc -std=c99 -pedantic -c -O2 -fPIC  -Wall -Werror -Wstrict-prototypes -g -ggdb category.c
In file included from thread.h:24,
                 from category.h:24,
                 from category.c:24:
event.h:59: error: field 'time_stamp' has incomplete type
make[1]: *** [category.o] Error 1
make[1]: Leaving directory `/home/lizhe/zlog-latest-stable/src'
make: *** [all] Error 2

 

 

展开
收起
爱吃鱼的程序员 2020-06-22 21:53:28 471 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这一行是

        structtimevaltime_stamp;

    你看一下在aix上这个结构是哪个头文件的,然后改一下加到上面就行了。

    在linux下是   #include<sys/time.h>


    1)不是没有包含time相关的头文件的问题,我将fmacros.h中的定义

    #ifdefined(__linux__)||defined(__OpenBSD__)
    #define_XOPEN_SOURCE700
    #else
    #define_XOPEN_SOURCE
    #endif

    注释掉就没有这个编译错误了,想问一下_XOPEN_SOURCE这个宏定义是干什么的。

    2)在src的makefile里,我看到

    #Platform-specificoverrides

    ...

    可以在make时通过什么参数指定编译平台么?

    https://github.com/redis/hiredis/issues/46

    看来是同样的问题

    这个宏的引入是为了解决某些linux上的pthread的头文件是否能找到问题,这是POSIX系统的一个标准宏

    http://stackoverflow.com/questions/5378778/what-does-d-xopen-source-do-mean

    厄,不得不说,编译系统是C的一大问题,只能每个平台上做一些小修改,如果你的改法能行,就这么用吧

    很遗憾的是自从unixcenter关闭后,我手上就没有aix环境来测试了。。。

    前段时间有个人( bmanojlovic)帮我在aix上编译了,修改了一些makefile的问题,现在估计在aix上能直接编译了吧
    2020-06-22 21:53:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载