zlog交叉编译的问题
@难易 你好,想跟你请教个问题:
我想在arm上使用zlog系统,编译的步骤如下:
1、./configure --enable-test --host=arm-linux
2、make
但是出现如下错误:
省略前面能编译过的部分
......
/bin/sh ../libtool --tag=CC --mode=compile arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -D_GNU_SOURCE -pthread -MT category_table.lo -MD -MP -MF .deps/category_table.Tpo -c -o category_table.lo category_table.c
libtool: compile: arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -D_GNU_SOURCE -pthread -MT category_table.lo -MD -MP -MF .deps/category_table.Tpo -c category_table.c -fPIC -DPIC -o .libs/category_table.o
libtool: compile: arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -D_GNU_SOURCE -pthread -MT category_table.lo -MD -MP -MF .deps/category_table.Tpo -c category_table.c -o category_table.o >/dev/null 2>&1
mv -f .deps/category_table.Tpo .deps/category_table.Plo
/bin/sh ../libtool --tag=CC --mode=compile arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -D_GNU_SOURCE -pthread -MT zlog.lo -MD -MP -MF .deps/zlog.Tpo -c -o zlog.lo zlog.c
libtool: compile: arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -D_GNU_SOURCE -pthread -MT zlog.lo -MD -MP -MF .deps/zlog.Tpo -c zlog.c -fPIC -DPIC -o .libs/zlog.o
zlog.c: In function 'hzlog':
zlog.c:761: error: incompatible type for argument 11 of 'zlog_output'
zlog.c: In function 'hdzlog':
zlog.c:783: error: incompatible type for argument 10 of 'dzlog_output'
make[2]: *** [zlog.lo] 错误 1
make[2]: Leaving directory `/home/work/yaof/workspace/zlog-1.0.7/libzlog'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/home/work/yaof/workspace/zlog-1.0.7'
make: *** [all] 错误 2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
哦,明白了,谢谢你。那6个线程大慨就需要18M的内存了咯?对我想运行的环境是一个压力啊!
zlog本身不产生进程,看用户程序的进程或者线程有多少。
hzlog是接口函数,不过va_list参数对hzlog是不必要的。
zlog会产生多少个进程呢?就是zlog最大会占用的内存是多少呢?
hzlog这个函数没有被调用,hzlog应该是内部函数,我感觉应该会被调用,要不就是接口函数吧?我这样理解可以不?
题外话,zlog为了提高性能,是以空间换时间,
开发的时候我想现在的内存便宜,即使是嵌入式平台也有很多内存
每个进程可能会有2-3MB的内存占用,不知道你的平台内存是否足够?
期待你的运行结果,呵呵
不是扩充,
当时是为了内部接口统一,尽量少写重复的代码
所以在hzlog里面这个参数实际是不需要的
恩,编译通了。好像hdzlog这个函数没有调用,是以后扩充需要的吗?
这么改在我的环境下能通过编译,看看你的情况如何?
不过我觉得不够漂亮,而且传不需要的参数会降低性能。
只是我的zlog.c里面已的zlog_output()和dzlog_output()代码的相似性很高,如果再分的话就有点难看了,看来也只能再度分化,把类似的代码再分,形成4个内部函数,不过这个改变要在下一版本出现。目前你的情况就先改着用下吧。
恩,更改后没有报错了。
为什么我找不到./configure,怎么进行交叉编译
看了一下,是va_list这个参数的问题,在hzlog和hdzlog里面,这个参数是不用的,所以我传值为0,不过看来这在arm上不行。
zlog_output(category, file, filelen, func, funclen, line, level, buf, buf_len, NULL, 0, ZLOG_HEX);
static int zlog_output(zlog_category_t * a_category,
const char *file, size_t file_len, const char *func, size_t func_len, long line, int level,
const void *hex_buf, size_t hex_buf_len, const char *str_format, va_list str_args,
int generate_cmd)
我查了一些资料,包括这些
https://bugzilla.redhat.com/show_bug.cgi?id=744707
https://bugs.launchpad.net/maria/+bug/700982
不过里面都没有提具体的解决方法,这里倒是有一个:
http://bugs.mysql.com/bug.php?id=62769&files=1
我建议你可以试试这么改