Thanks a lot Brad. I'm going to give this a shot. I started down a rabbit hole when I noticed that the rados client in the default repositories in fedora 23 was too old to talk to luminous. So in our CI we just installed Luminous everywhere out of simplicity. Then we started hitting issues like this ABI stuff. Turns out the clients in the default repositories in fc 24+ work just fine, so dropping fc23 support was reasonable since it was mostly to support development environments. On Thu, Sep 14, 2017 at 9:14 PM, Brad Hubbard <bhubbard@xxxxxxxxxx> wrote: > On Fri, Sep 15, 2017 at 7:40 AM, Noah Watkins <noahwatkins@xxxxxxxxx> wrote: >> Yeh, thanks, I just noticed this: >> >> On the Fedora nodes the following works `c++ >> -D_GLIBCXX_USE_CXX11_ABI=0 --std=c++11 -Wall test.cc -lrados`, and on >> CentOS 7, either 0 or 1 works for the CXX11_ABI variable. >> >> The docs say "When defined to a non-zero value [the CXX11_ABI >> variable] the library headers will use the new C++11-conforming ABI >> introduced in GCC 5, rather than the older ABI introduced in GCC 3.4". >> >> Makes sense. I guess I expected issues like this to be filtered out / >> caught through rpm magic. Know of any CMake magic macros that can turn >> those flags on? > > You can try these if you want? > > https://copr.fedorainfracloud.org/coprs/badone/ceph-luminous/build/602668/ > > Not official of course, but probably (maybe?) better than what you're using now? > >> >> On Thu, Sep 14, 2017 at 2:31 PM, Sage Weil <sage@xxxxxxxxxxxx> wrote: >>> On Thu, 14 Sep 2017, Noah Watkins wrote: >>>> Running into some undefined references linking against librados in >>>> Luminous. Installed using RPM repo instructions from Ceph docs. Note >>>> this issue shows up on Fedora 23,24,25, but not on CentOS 7. >>> >>> It looks a bit like these are C++ ABI differences because you are using >>> el7 libraries on an fc25 box, which probably has a different >>> version of gcc, libraries, etc? >>> >>> sage >>> >>> >>>> # Test program >>>> >>>> [root@0ac98bfcffa2 build]# cat test.cc >>>> #include <rados/librados.hpp> >>>> >>>> int main(int argc, char **argv) >>>> { >>>> librados::IoCtx ioctx; >>>> return ioctx.create("foo", true); >>>> } >>>> >>>> # Linking error >>>> >>>> [root@0ac98bfcffa2 build]# c++ --std=c++11 -Wall test.cc -lrados >>>> /tmp/cc4MZnFR.o: In function `main': >>>> test.cc:(.text+0x51): undefined reference to >>>> `librados::IoCtx::create(std::__cxx11::basic_string<char, >>>> std::char_traits<char>, std::allocator<char> > const&, bool)' >>>> collect2: error: ld returned 1 exit status >>>> >>>> # Looks like everything is installed correctly. >>>> >>>> [root@0ac98bfcffa2 build]# librados-config --version >>>> ceph version 12.2.0 (32ce2a3ae5239ee33d6150705cdb24d43bab910c) luminous (rc) >>>> >>>> [root@0ac98bfcffa2 build]# rpm -qa | grep 'rados\|ceph' >>>> python-rados-12.2.0-0.el7.x86_64 >>>> python-cephfs-12.2.0-0.el7.x86_64 >>>> ceph-selinux-12.2.0-0.el7.x86_64 >>>> ceph-osd-12.2.0-0.el7.x86_64 >>>> librados2-12.2.0-0.el7.x86_64 >>>> libradosstriper1-12.2.0-0.el7.x86_64 >>>> ceph-base-12.2.0-0.el7.x86_64 >>>> ceph-mds-12.2.0-0.el7.x86_64 >>>> ceph-mon-12.2.0-0.el7.x86_64 >>>> ceph-12.2.0-0.el7.x86_64 >>>> libcephfs2-12.2.0-0.el7.x86_64 >>>> ceph-common-12.2.0-0.el7.x86_64 >>>> ceph-mgr-12.2.0-0.el7.x86_64 >>>> librados-devel-12.2.0-0.el7.x86_64 >>>> -- >>>> 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 >>>> >>>> >> -- >> 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 > > > > -- > Cheers, > Brad -- 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