LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3272|回复: 22

glibc 头文件中存在BUG?(gcc 4.1)

[复制链接]
发表于 2007-8-20 13:43:53 | 显示全部楼层 |阅读模式
今天将系统进行了升级,升级为debian-40r0

并安装了光盘上自带的gcc (gcc 4.1)



当用源码编译安装vsftpd-2.0.5时,出现如下问题:

[Copy to clipboard] [ - ]CODE:
...
gcc -c sysutil.c -O2 -Wall -W -Wshadow -march=i586 -mtune=i686 -idirafter
dummyinc
sysutil.c: In function 'vsf_sysutil_wait_exited_normally':
sysutil.c:604: error: assignment of read-only member '__in'
sysutil.c: In function 'vsf_sysutil_wait_get_exitcode':
sysutil.c:614: error: assignment of read-only member '__in'
make: *** [sysutil.o] Error 1
用google查了下网上根本找不到答案,最后在gnu的maillist上看到同样有人问这个问题
得到的答案是

QUOTE:
Actually it is a bug in glibc's header with WIFEXITED, WEXITSTATUS, etc.
根据http://sourceware.org/bugzilla/show_bug.cgi?id=1392

上的提示将 wait.h中作由下修改

[Copy to clipboard] [ - ]CODE:
#   define __WAIT_INT(status)                                                      \
(__extension__ ({ union { __typeof(status) __in; int __i; } __u;              \
                    __u.__in = (status); __u.__i; }))


[Copy to clipboard] [ - ]CODE:
#   define __WAIT_INT(status) \
  (__extension__ (((union { __typeof(status) __in; int __i; }) \
                   { .__in = (status) }).__i))
但是新问题又来了,编译又说 sysdeputil.c编译出错?

本人菜鸟一个,不知道是什么原因。希望各位给一个思路!谢谢!!!
发表于 2007-8-20 20:49:53 | 显示全部楼层
换 gcc-3.3 试试如何?
回复 支持 反对

使用道具 举报

发表于 2007-8-21 00:20:47 | 显示全部楼层
vsftpd-2.0.5 我用 gcc-4.2.1 也能通过,相信不是 gcc 版本问题

貌似楼主的 bugzilla 已是 N 年前的了,还能作參考吗?反而觉得可能是系统里的编译环境不全
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-21 00:36:44 | 显示全部楼层
vsftpd-2.0.5 我用 gcc-4.2.1 也能通过,相信不是 gcc 版本问题

貌似楼主的 bugzilla 已是 N 年前的了,还能作參考吗?反而觉得可能是系统里的编译环境不全


我觉得应该是楼上所说的问题,debian系统的编译环境我接触不多,我只是用安装了以下部件

gcc
g++
libc-dev
我只安装了这些部件,不知道缺了哪些部件!
回复 支持 反对

使用道具 举报

发表于 2007-8-21 00:51:00 | 显示全部楼层
那麽内核头文件呢?

(其实 libc-dev 是个 virtual package,通常真接装 libc6-dev)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-21 10:53:46 | 显示全部楼层
那麽内核头文件我就不知道了,我是安装的debian的base system
然后安装gcc的,不知道内核头文件安装没有,

我是新手,不知doom3d能否给我讲解一下,

先谢过了!!!
回复 支持 反对

使用道具 举报

发表于 2007-8-21 18:52:49 | 显示全部楼层
把 linux-headers-x.6-xxxxx 也装上
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-21 21:28:45 | 显示全部楼层
多谢啊!!!

不过如果是用apt方式 安装应该是什么名字呢?
回复 支持 反对

使用道具 举报

发表于 2007-8-21 21:41:10 | 显示全部楼层
apt-cache search linux-headers-2.6

找个名字跟你系统的架构对囗的,如 686、k7 等
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-21 23:07:49 | 显示全部楼层
我安装了header了,我是686 架构的,还是提示

gcc -c sysutil.c -O2 -Wall -W -Wshadow -march=i586 -mtune=i686 -idirafter
dummyinc
sysutil.c: In function 'vsf_sysutil_wait_exited_normally':
sysutil.c:604: error: assignment of read-only member '__in'
sysutil.c: In function 'vsf_sysutil_wait_get_exitcode':
sysutil.c:614: error: assignment of read-only member '__in'
make: *** [sysutil.o] Error 1

老大再帮我看一下哈,我用我的那环境编译安装 zlib openssl openssh apache 什么的都没有问题啊,就这个vsftpd 在这环境下面有问题啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表