diff mbox

[ceph-users] compile error on centos 5.9

Message ID 52010F03.7060806@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

huang jun Aug. 6, 2013, 2:58 p.m. UTC
? 2013/8/5 17:51, huangjun ??:
> ? 2013/8/5 12:03, Sage Weil ??:
>> [Moving to ceph-devel]
>>
>> On Mon, 5 Aug 2013, huangjun wrote:
>>> hi,all
>>> i compiled ceph 0.61.3 on centos 5.9,the "sh autogen.sh" and
>>> "./configure " is ok, but when i "make", an error occurs, the err log:
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h: 
>>>
>>> In function ?int rados::cls::lock::lock(librados::IoCtx*, const
>>> std::string&, const std::string&, ClsLockType, const std::string&, 
>>> const
>>> std::string&, const std::string&, const utime_t&, uint8_t)?:
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h:83: 
>>>
>>> error: ?class __gnu_cxx::lock? is not a function,
>>> cls/lock/cls_lock_client.cc:59: error: conflict with ?int
>>> rados::cls::lock::lock(librados::IoCtx*, const std::string&, const
>>> std::string&, ClsLockType, const std::string&, const std::string&, 
>>> const
>>> std::string&, const utime_t&, uint8_t)?
>>> cls/lock/cls_lock_client.cc:62: error: in call to ?lock?
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h: 
>>>
>>> In member function ?void
>>> rados::cls::lock::Lock::lock_shared(librados::ObjectWriteOperation*)?:
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h:83: 
>>>
>>> error: ?class __gnu_cxx::lock? is not a function,
>>> cls/lock/cls_lock_client.cc:59: error: conflict with ?int
>>> rados::cls::lock::lock(librados::IoCtx*, const std::string&, const
>>> std::string&, ClsLockType, const std::string&, const std::string&, 
>>> const
>>> std::string&, const utime_t&, uint8_t)?
>>> cls/lock/cls_lock_client.cc:181: error: in call to ?lock?
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h: 
>>>
>>> In member function ?int
>>> rados::cls::lock::Lock::lock_shared(librados::IoCtx*, const 
>>> std::string&)?:
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h:83: 
>>>
>>> error: ?class __gnu_cxx::lock? is not a function,
>>> cls/lock/cls_lock_client.cc:59: error: conflict with ?int
>>> rados::cls::lock::lock(librados::IoCtx*, const std::string&, const
>>> std::string&, ClsLockType, const std::string&, const std::string&, 
>>> const
>>> std::string&, const utime_t&, uint8_t)?
>>> cls/lock/cls_lock_client.cc:187: error: in call to ?lock?
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h: 
>>>
>>> In member function ?void
>>> rados::cls::lock::Lock::lock_exclusive(librados::ObjectWriteOperation*)?: 
>>>
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h:83: 
>>>
>>> error: ?class __gnu_cxx::lock? is not a function,
>>> cls/lock/cls_lock_client.cc:59: error: conflict with ?int
>>> rados::cls::lock::lock(librados::IoCtx*, const std::string&, const
>>> std::string&, ClsLockType, const std::string&, const std::string&, 
>>> const
>>> std::string&, const utime_t&, uint8_t)?
>>> cls/lock/cls_lock_client.cc:193: error: in call to ?lock?
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h: 
>>>
>>> In member function ?int
>>> rados::cls::lock::Lock::lock_exclusive(librados::IoCtx*, const
>>> std::string&)?:
>>> /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/concurrence.h:83: 
>>>
>>> error: ?class __gnu_cxx::lock? is not a function,
>>> cls/lock/cls_lock_client.cc:59: error: conflict with ?int
>>> rados::cls::lock::lock(librados::IoCtx*, const std::string&, const
>>> std::string&, ClsLockType, const std::string&, const std::string&, 
>>> const
>>> std::string&, const utime_t&, uint8_t)?
>>> cls/lock/cls_lock_client.cc:199: error: in call to ?lock?
>>> make[3]: *** [cls_lock_client.o] Error 1
>>>
>>> the gcc version is 4.1.2, does this make a difference?
>> I suspect so.  Mark Nelson successfully built on RHEL5 a while back but
>> needed to use a newer gcc.
>>
>>> what should i do if i want to use ceph-fuse client on centos 5.9? must
>>> compile the ceph? or just compile the ceph-fuse code?
>> Right.. you only need the ceph-fuse code.  'make ceph-fuse' may do the
>> trick.  Otherwise, you'll need to just strip out the osd stuff from
>> Makefile.am.
>>
>> Either way, let us know how it goes, as others would benefit from 
>> this as
>> well!
>>
>> Thanks-
>> sage
> unfortunatly, i installed gcc4.4.7 and recompiled source code, but 
> failed again:
>
> /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’
> In file included from /usr/include/sys/types.h:133,
> from /usr/include/stdlib.h:438,
> from ./include/buffer.h:29,
> from mds/Capability.h:19,
> from mds/Capability.cc:15:
> /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’
> In file included from /usr/include/stdlib.h:438,
> from ./include/buffer.h:29,
> from mds/Capability.h:19,
> from mds/Capability.cc:15:
> /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’
> In file included from /usr/include/sys/types.h:220,
> from /usr/include/stdlib.h:438,
> from ./include/buffer.h:29,
> from mds/Capability.h:19,
> from mds/Capability.cc:15:
> /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’
> In file included from /usr/include/stdlib.h:438,
> from ./include/buffer.h:29,
> from mds/Capability.h:19,
> from mds/Capability.cc:15:
> /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’
> In file included from ./include/buffer.h:48,
> from mds/Capability.h:19,
> from mds/Capability.cc:15:
> /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’
> In file included from mds/Capability.h:24,
> from mds/Capability.cc:15:
> mds/mdstypes.h: In member function ‘size_t 
> __gnu_cxx::hash<vinodeno_t>::operator()(const vinodeno_t&) const’:
> mds/mdstypes.h:252: error: no match for call to ‘(__gnu_cxx::hash<long 
> long unsigned int>) (const snapid_t&)’
> mds/mdstypes.h: In member function ‘void 
> dentry_key_t::encode(ceph::bufferlist&) const’:
> mds/mdstypes.h:531: warning: format ‘%lx’ expects type ‘long unsigned 
> int’, but argument 4 has type ‘uint64_t’
> mds/mdstypes.h:531: warning: format ‘%lx’ expects type ‘long unsigned 
> int’, but argument 4 has type ‘uint64_t’
> mds/mdstypes.h: In member function ‘size_t 
> __gnu_cxx::hash<metareqid_t>::operator()(const metareqid_t&) const’:
> mds/mdstypes.h:673: error: no match for call to ‘(__gnu_cxx::hash<long 
> long unsigned int>) (int64_t)’
> mds/mdstypes.h:673: error: no match for call to ‘(__gnu_cxx::hash<long 
> long unsigned int>) (int)’
> mds/mdstypes.h:673: error: no match for call to ‘(__gnu_cxx::hash<long 
> long unsigned int>) (const uint64_t&)’
> make[3]: *** [Capability.o] Error 1
>
> Mark, do you have meet this problem before, and would you like to 
> share your experiences on centos 5?
>
> thanks!
hi,all
today,i have make the ceph compiled successfully on centos 5.9.
there are two points to take care of so far:
1)install the required packages
   ***boost1.41***
    a) download the epel package on website: 
http://dl.fedoraproject.org/pub/epel/5/x86_64/
    b) rpm -Uvh epel-release*rpm
    c) yum install boost141*
   ***automake,aclocal(1.11.1)***
     wget http://ftp.gnu.org/gnu/automake/automake-1.11.1.tar.gz
     tar xzvf automake-1.11.1.tar.gz
     cd automake-1.11.1
     ./configure
     make -j4
     make install
   ***gcc44***
     yum install gcc44*
     export CC=/usr/bin/gcc44
     export CXX=/usr/bin/g++44
   ***other packages***
     yum install libtool autoconf autoheader autoreconf e2fsprogs-devel 
keyutils-libs-devel fuse-devel fuse nss-devel nss libxml2-devel 
sharutils java-devel expat expat-devel cryptopp cryptopp-devel 
libatomic_ops-devel gperftools-libs gperftools-devel libaio libaio-devel
     wget 
http://pkgs.repoforge.org/libedit/libedit-20090923-3.0_1.el5.rf.x86_64.rpm
     wget 
http://pkgs.repoforge.org/libedit/libedit-devel-20090923-3.0_1.el5.rf.x86_64.rpm
     wget 
http://pkgs.repoforge.org/snappy/snappy-devel-1.0.5-1.el5.rf.x86_64.rpm
     wget http://pkgs.repoforge.org/snappy/snappy-1.0.5-1.el5.rf.x86_64.rpm
2)change the include order in src/include/buffer.h

ps: does this has effect on other modules?

then you can compile ceph on centos5 by "sh autogen && ./configure && 
make -j4 && make install"
welcome to check it!

thanks!
huangjun
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/src/include/buffer.h b/src/include/buffer.h
index 99c1985..d485c3f 100644
--- a/src/include/buffer.h
+++ b/src/include/buffer.h
@@ -16,17 +16,19 @@ 
  #define CEPH_BUFFER_H

  #if defined(__linux__)
+#include <stdlib.h>
  #include <linux/types.h>
  #elif defined(__FreeBSD__)
  #include <sys/types.h>
  #include "include/inttypes.h"
+#include <stdlib.h>
  #endif

  #ifndef _XOPEN_SOURCE
  # define _XOPEN_SOURCE 600
  #endif

-#include <stdlib.h>
+//#include <stdlib.h>
  #include <stdio.h>

  #ifdef DARWIN