Chinaunix

标题: 多线程的一个编译错误 [打印本页]

作者: hoige    时间: 2008-02-22 10:42
标题: 多线程的一个编译错误
大家好。
编译一个现成的软件ES5   U1(gcc4.1.2)上大量的错误信息,但比较集中
大约是
xxxx警告:当将一个指针转换为大小不同的整数时给出警告

1、rwlock.c:71:   错误:‘-> ’   的实参类型无效     (invalid   type   argument   of   `-> ')
2、rwlock.c:113:   错误:实参   1(属于   ‘free’)类型不兼容   (incompatible   type   for   argument   1   of   `free')
3、rwlock.c:139:   错误:双目运算符   ==   操作数无效

等等
类似

看71行代码:pthread_mutex_destroy(&prwlock-> lock);
其中定义:pthread_rwlock_t   prwlock;

prwlock   =   *rwlock;

而pthread_rwlock_t   定义是:
struct   pthread_rwlock   {
pthread_mutex_t   lock;   /*   monitor   lock   */   int   state;   /*   0   =   idle   > 0   =   #   of   readers   -1   =   writer   */   pthread_cond_t   read_signal;
pthread_cond_t   write_signal;
int   blocked_writers;
};

struct   pthread_rwlockattr   {
int   pshared;
};

typedef   struct   pthread_rwlock   *pthread_rwlock_t;


其他的错误也集中在对prwlock   的操作上
看来是这个pthread_rwlock_t定义中的问题了
难道pthread_cond_t和pthread_mutex_t在ES5中有不同定义?????还是32位和64位的问题造成的????


谢谢

[ 本帖最后由 hoige 于 2008-2-29 08:43 编辑 ]
作者: safedead    时间: 2008-02-22 11:15
gcc 3.x和gcc 4.x有很多不兼容的地方
kernel >= 2.6.11和之前把版本也有相当多不同
普通C程序还好,我有耐心改
改一个小小的驱动程序就已经让我彻底发疯了

LZ慢慢改程序吧
4核XEON在老内核上没法用,最新系统是必须的
作者: hoige    时间: 2008-02-22 16:37
谢谢
我忘了写
在ES5上即使使用gcc3.4也不行,错误相同
不知道怎么解决
而且很奇怪
作者: anyche    时间: 2008-02-22 23:06
希望各位多发表意见
谢谢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2