Bug #10735
closed
ceph source tree doesn't build with --enable-debug --enable-xio
Added by Danny Al-Gaaf over 9 years ago.
Updated about 9 years ago.
Description
The test code doesn't build with the following configure line:
./configure --with-debug --with-radosgw --with-ocf --with-nss --with-profiler --enable-xio
Changing the src/Makefile.am doesn't help due to a hidden symbol (get_xio_mp) in src/include/buffer.h
Files
I had an action item from Sage to add an Accelio submodule, so it seems like that's a next step?
I'll proceed in that direction and post something for comment.
A submodule with the accelio code doesn't solve it. This is a code/makefile issue in ceph itself since get_xio_mp is a hidden symbol (I have all depending libs installed). Even if you add the correct LDADD to the Makefile it will still fail due to the hidden symbol. I gave it a short try and didn't get it fixed.
Danny, what is exactly the error message? could you please post it somewhere? thanks.
I will post the message as soon as I have recreated the patch for the Makefile (together with an initial patch).
The partial patch for make is attached. The error is (hidden symbol ZN4ceph10get_xio_mpERKNS_6buffer3ptrE):
make -j2
[...]
CXXLD ceph_test_rados_striper_api_io
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: .libs/ceph_test_rados_striper_api_io: hidden symbol `_ZN4ceph10get_xio_mpERKNS_6buffer3ptrE' in ./.libs/libglobal.a(libcommon_api_la-buffer.o) is referenced by DSO
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make[3]: *** [ceph_test_rados_striper_api_io] Error 1
Note: this error from traditional autotools/make. Check now if the same problem exists with cmake.
- Status changed from New to 12
- Assignee set to Kefu Chai
- % Done changed from 0 to 80
thanks Danny, i managed to come up with a patch based on the one from you. the problem should only affect the build with autotools. seems we hide the symbols in common/buffer.cc
in src/common/Makefile.am
in order to hide the internals of the DSO (dynamic shared object) from its users. but turns out the XioMessager.cc
is referencing the symbol of get_xio_mp()
you are talking about. that's why the build fails.
i am assigning my PR to you on github, but please feel free to reject it if you have not enough bandwidth for it. thank you. =)
- Subject changed from ceph source tree doesn't build with --with-debug --enable-xio to ceph source tree doesn't build with --enable-xio
- Subject changed from ceph source tree doesn't build with --enable-xio to ceph source tree doesn't build with --enable-debug --enable-xio
- Status changed from 12 to Fix Under Review
i removed the references to g_conf and g_ceph_context from msg/xio. this could help a little bit.
- Status changed from Fix Under Review to Resolved
- % Done changed from 80 to 100
Also available in: Atom
PDF