LinuxSir.cn,穿越时空的Linuxsir!

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

编译dbus的错误,大家给诊断下,是不是缺那个库没装

[复制链接]
发表于 2008-10-25 12:46:53 | 显示全部楼层 |阅读模式
dbus-sysdeps-unix.c: In function '_dbus_read_credentials_unix_socket':
dbus-sysdeps-unix.c:1002: error: storage size of 'cr' isn't known
dbus-sysdeps-unix.c:1005: warning: pointer targets in passing argument 5 of 'getsockopt' differ in signedness
dbus-sysdeps-unix.c:1002: warning: unused variable 'cr'
dbus-sysdeps-unix.c: In function 'split_paths_and_append':
dbus-sysdeps-unix.c:2597: warning: passing argument 1 of '_dbus_string_init_const' discards qualifiers from pointer target type
dbus-sysdeps-unix.c: In function '_dbus_get_standard_session_servicedirs':
dbus-sysdeps-unix.c:2766: warning: passing argument 1 of '_dbus_string_init_const' discards qualifiers from pointer target type
make[3]: *** [dbus-sysdeps-unix.lo] 错误 1
make[3]: Leaving directory `/root/Desktop/download/dbus-1.0.3/dbus'
make[2]: *** [all] 错误 2
make[2]: Leaving directory `/root/Desktop/download/dbus-1.0.3/dbus'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/root/Desktop/download/dbus-1.0.3'
make: *** [all] 错误 2
 楼主| 发表于 2008-10-25 14:49:05 | 显示全部楼层
兄弟们,给诊断一下阿,那个dbus还是比较重要的阿,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-26 01:13:03 | 显示全部楼层
不会把,兄弟们,这个怎么搞阿,快要沉了阿,给个建议阿,这个影响xfce的编译阿
高手快点来吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-26 08:38:17 | 显示全部楼层
那个cr是一个struct

_dbus_verbose ("read credentials byte\n");

  {
#ifdef SO_PEERCRED
    struct ucred cr;   
    int cr_len = sizeof (cr);
   
    if (getsockopt (client_fd, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) == 0 &&
        cr_len == sizeof (cr))
      {
        credentials->pid = cr.pid;
        credentials->uid = cr.uid;
        credentials->gid = cr.gid;
      }
    else
      {
        _dbus_verbose ("Failed to getsockopt() credentials, returned len %d/%d: %s\n",
                       cr_len, (int) sizeof (cr), _dbus_strerror (errno));
      }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-26 08:39:43 | 显示全部楼层
那个库包含了ucred.h这个头文件阿
回复 支持 反对

使用道具 举报

发表于 2008-10-26 08:51:12 | 显示全部楼层
引自 http://www.linuxfromscratch.org/blfs/view/svn/general/dbus.html
D-BUS Dependencies
Required

expat-2.0.1 or both pkg-config-0.22 and libxml2-2.6.31
依赖都满足了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-26 10:41:52 | 显示全部楼层
满足了,我后来把那个
#ifdef SO_PEERCRED
struct ucred cr;
int cr_len = sizeof (cr);

if (getsockopt (client_fd, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) == 0 &&
cr_len == sizeof (cr))
{
credentials->pid = cr.pid;
credentials->uid = cr.uid;
credentials->gid = cr.gid;
}
else
{
_dbus_verbose ("Failed to getsockopt() credentials, returned len %d/%d: %s\n",
cr_len, (int) sizeof (cr), _dbus_strerror (errno));

#endif
给删除了,编译可以通过
我查那个SO_PEERCRED,没有定义过,不知为什么还是执行编译了,不明白的地方,我删除后可以编译通过
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-26 10:44:16 | 显示全部楼层
而且也一直没有找到那个ucred.h头文件,查看config.h时,也没有定义
回复 支持 反对

使用道具 举报

发表于 2010-9-17 11:20:56 | 显示全部楼层
我也遇到了一样的问题,我的方法很简单。自己按照socket.h中的struct ucred定义,在dbus-sysdeps-unix.c再写一次,就可以了。

在 dbus-sysdeps-unix.c 文件中,增加一个定义

struct ucred
{
  pid_t pid;                    /* PID of sending process.  */
  uid_t uid;                    /* UID of sending process.  */
  gid_t gid;                    /* GID of sending process.  */
};

就可以了
回复 支持 反对

使用道具 举报

发表于 2010-10-4 09:49:15 | 显示全部楼层
傻呀!用低版本就行了!

BLFS版本依赖太大!尤其是DBUS和FREETYPE。

建议直接看{C,}BLFS,千万不要冒险!
回复 支持 反对

使用道具 举报

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

本版积分规则

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