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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html