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