免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4162 | 回复: 3
打印 上一主题 下一主题

多线程的一个编译错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2008-02-22 11:15 |只看该作者
gcc 3.x和gcc 4.x有很多不兼容的地方
kernel >= 2.6.11和之前把版本也有相当多不同
普通C程序还好,我有耐心改
改一个小小的驱动程序就已经让我彻底发疯了

LZ慢慢改程序吧
4核XEON在老内核上没法用,最新系统是必须的

论坛徽章:
0
3 [报告]
发表于 2008-02-22 16:37 |只看该作者
谢谢
我忘了写
在ES5上即使使用gcc3.4也不行,错误相同
不知道怎么解决
而且很奇怪

论坛徽章:
0
4 [报告]
发表于 2008-02-22 23:06 |只看该作者
希望各位多发表意见
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP