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? 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