Hi all,
I am building a shared library for Linux, for which I would like to export
as few symbols as possible (ideally only the functions that my library users
actually need to call). When building my project, I have the following
options:
-fvisibility=hidden -fvisibility-inlines-hidden
I then mark all the functions that I am exporting as having default
visibility. I link to static versions of boost.thread and boost.system. When
I then say:
nm -DC libtest.so
I get a large number of symbols such as:
0002abe0 V typeinfo name for
boost::exception_detail::clone_impl
0002ace0 V typeinfo name for boost::exception_detail::bad_exception_
00029920 V typeinfo name for
boost::exception_detail::error_info_injector
00029b00 V typeinfo name for
boost::exception_detail::error_info_injector
00029860 V typeinfo name for
boost::exception_detail::error_info_injector
0002970f V typeinfo name for boost::thread_exception
00029a7b V typeinfo name for boost::thread_interrupted
00029740 V typeinfo name for boost::thread_resource_error
0002ac40 V typeinfo name for
boost::enable_shared_from_this
0002a720 V typeinfo name for boost::detail::thread_data_base
0002ad20 V typeinfo name for
boost::detail::sp_counted_impl_p
0002adc0 V typeinfo name for
boost::detail::sp_counted_impl_pboost::exception_detail::bad_alloc_ >
0002ad60 V typeinfo name for
boost::detail::sp_counted_impl_pboost::exception_detail::bad_exception_ >
000296f1 V typeinfo name for boost::system::system_error
I see this after having stripped the binary. Is there any way to get rid of
these? Do I need to build Boost with some special cxxflags?
Kind regards,
Philip Bennefall