@难易 你好,想跟你请教个问题:
我在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
这一行是
structtimevaltime_stamp;
你看一下在aix上这个结构是哪个头文件的,然后改一下加到上面就行了。
在linux下是 #include<sys/time.h>
1)不是没有包含time相关的头文件的问题,我将fmacros.h中的定义
#ifdefined(__linux__)||defined(__OpenBSD__)注释掉就没有这个编译错误了,想问一下_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上能直接编译了吧版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。