On 08/02/2012 12:39 PM, Nick Couchman wrote:
Running into some errors compiling ceph-0.48 (argonaut) on RHEL5.  It gets most 
of the way through the build process and then throws the following:

   CXX    librbd_la-cls_rbd_client.lo
/usr/include/sys/types.h:46: error: conflicting declaration 'typedef __loff_t 
loff_t'
/usr/include/linux/types.h:30: error: 'loff_t' has a previous declaration as 
'typedef __kernel_loff_t loff_t'
/usr/include/sys/types.h:62: error: conflicting declaration 'typedef __dev_t 
dev_t'
/usr/include/linux/types.h:13: error: 'dev_t' has a previous declaration as 
'typedef __kernel_dev_t dev_t'
/usr/include/time.h:105: error: conflicting declaration 'typedef void* timer_t'
/usr/include/linux/types.h:22: error: 'timer_t' has a previous declaration as 
'typedef __kernel_timer_t timer_t'
/usr/include/sys/types.h:198: error: conflicting declaration 'typedef long int 
int64_t'
/usr/include/linux/types.h:98: error: 'int64_t' has a previous declaration as 
'typedef __s64 int64_t'
/usr/include/sys/types.h:204: error: conflicting declaration 'typedef long 
unsigned int u_int64_t'
/usr/include/linux/types.h:97: error: 'u_int64_t' has a previous declaration as 
'typedef __u64 u_int64_t'
/usr/include/sys/select.h:78: error: conflicting declaration 'typedef struct 
fd_set fd_set'
/usr/include/linux/types.h:12: error: 'fd_set' has a previous declaration as 
'typedef struct __kernel_fd_set fd_set'
/usr/include/sys/types.h:248: error: conflicting declaration 'typedef 
__blkcnt64_t blkcnt_t'
/usr/include/linux/types.h:114: error: 'blkcnt_t' has a previous declaration as 
'typedef long unsigned int blkcnt_t'
/usr/include/stdint.h:56: error: conflicting declaration 'typedef long unsigned 
int uint64_t'
/usr/include/linux/types.h:96: error: 'uint64_t' has a previous declaration as 
'typedef __u64 uint64_t'
make[3]: *** [librbd_la-cls_rbd_client.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory `/usr/src/redhat/BUILD/ceph-0.48argonaut.test/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/src/redhat/BUILD/ceph-0.48argonaut.test/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/redhat/BUILD/ceph-0.48argonaut.test/src'
make: *** [all-recursive] Error 1

So, looks like a source file is pulling in both sys/types.h and linux/types.h, 
and that's causing problems.  From what I can see, most of the files only pull 
in one or the other (via some ifdef/elif code blocks), but evidently one of 
them does not.  I have not been able to track it down, yet - is this something 
anyone else has encountered?  0.44 seemed to work fine, this seems to be unique 
to 0.48.

It looks like this might be src/include/types.h including sys/types.h and src/include/rbd_types.h, which is including linux/types.h.

Does adding ifdefs to src/include/types.h so it includes linux/types.h on linux work?

Thanks,
Nick

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to