Hi, back to work after holidays and some other issues regarding me to contribute to the project.

Time to 'svn update', resolve some conflicts and compile again the whole stuff. In this process, I've revisited some old issue with the solaris linker and its handling of implicit dependencies (i.e. libraries linked by other libraries).

I already suffered this problem during the link stage of qpidd, where I needed to add a -lboost_system linker flag, to fix unresolved symbol errors.

So, I guess the solaris linker doesn't like to follow linked library dependencies whereas the linux one does. Otherwise, I suppose that the linux qpidd wouldn't link, and I suppose that's not the case.

Even worse, the new organization of acl and cluster as plugins (I guess) threw more similar problems. Since libtool is passed the -no-undefined and -module options, the solaris linker is instructed to not allow undefined symbols, and since only the libraries specified in the link command are taken into account, lots of errors arised. I'm adding the linkage errors below.

I'm not even sure if this analysis is right. Comments are welcome. And even if it's right, don't know how to proceed. Adding inconditionally all the involved libraries in all the LDFLAGS lines? Unfortunately, there will be differences between linux and solaris, since in solaris we should even explicitly link against the C++ runtime (-lCrun).

Ideas are welcome. :)

Best regards.
Manuel.

PS: The promised log


/bin/bash ../libtool --tag=CXX --mode=link CC -g -m64 -I/opt/dslap/contrib/include -library=stlport4 -mt -no-undefined -module -avoid-version -L/opt/dslap/contrib/lib -library=stlport4 -mt -L/usr/lib/openais -L/usr/lib64/openais -o acl.la -rpath /opt/dslap/contrib/lib/qpid/daemon qpid/acl/Acl.lo qpid/acl/AclData.lo qpid/acl/AclPlugin.lo qpid/acl/AclReader.lo libqpidbroker.la
rm -fr  .libs/acl.so
CC -g -m64 -G -zdefs -hacl.so -o .libs/acl.so qpid/acl/.libs/Acl.o qpid/acl/.libs/AclData.o qpid/acl/.libs/AclPlugin.o qpid/acl/.libs/AclReader.o -R/export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs -R/opt/dslap/contrib/lib -L/export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs -L/opt/dslap/contrib/lib -library=stlport4 -L/usr/lib/openais -L/usr/lib64/openais ./.libs/libqpidbroker.so -lc -m64 -mt -mt
Undefined                       first referenced
symbol                             in file
void __Crun::pure_error() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) const std::type_info&__Crun::make_typeid(const __Crun::static_type_info*) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void*__Crun::simple_down_cast(void*,const __Crun::static_type_info*,const __Crun::static_type_info*) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void qpid::Plugin::Target::addFinalizer(const boost::function<void(),std::allocator<void> >&) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::Options::Options #Nvariant 1(const std::string &) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::__RTTI__1nEqpidJException_ qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) [Hint: static member qpid::__RTTI__1nEqpidJException_ must be defined in the program]

void*__Crun::ex_alloc(unsigned long) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void __Crun::ex_throw(void*,const __Crun::static_type_info*,void(*)(void*)) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) qpid::Plugin::Plugin #Nvariant 1() qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::Plugin::~Plugin #Nvariant 1() qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) std::__RTTI__1nDstdJexception_ qpid/acl/.libs/AclReader.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) [Hint: static member std::__RTTI__1nDstdJexception_ must be defined in the program]

boost::program_options::options_description_easy_init&boost::program_options::options_description_easy_init::operator()(const char*,const boost::program_options::value_semantic*,const char*) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) qpid::sys::AbsTime qpid::sys::AbsTime::now() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::framing::FieldTable::~FieldTable() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) boost::program_options::arg qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) [Hint: static member boost::program_options::arg must be defined in the program]

qpid::framing::SequenceNumber::SequenceNumber() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::Exception::Exception(const std::string &) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::__RTTI__1nEqpidGPluginGTarget_ qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) [Hint: static member qpid::__RTTI__1nEqpidGPluginGTarget_ must be defined in the program]

int qpid::management::ManagementObject::getThreadIndex() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) qpid::Exception::~Exception() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) void boost::program_options::validate(boost::any&,const std::vector<std::string>&,std::string *,int) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) qpid::SessionState::Configuration::Configuration(unsigned long,unsigned long) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) boost::program_options::typed_value<bool,char>*boost::program_options::bool_switch(bool*) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) std::string qpid::prettyArg(const std::string &,const std::string &) qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) void*__Crun::ex_get() qpid/acl/.libs/AclReader.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void*operator new(unsigned long,void*) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) qpid::framing::SequenceNumber::SequenceNumber(unsigned) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) std::exception::__vtbl qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) [Hint: try checking whether the first non-inlined, non-pure virtual function of class std::exception is defined]

boost::program_options::options_description_easy_init boost::program_options::options_description::add_options() qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) void __Crun::ex_rethrow_q() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) qpid::SessionId::SessionId(const std::string &,const std::string &) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) void qpid::log::Statement::log(const std::string &) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) boost::program_options::options_description::m_default_line_length qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) [Hint: static member boost::program_options::options_description::m_default_line_length must be defined in the program]

void boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&,const std::vector<std::string>&,bool)const qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /opt/dslap/contrib/lib/libboost_program_options.so) void __Crun::register_exit_code(void(*)()extern"C") qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) bool __Crun::ex_skip() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) qpid::management::Manageable::__vtbl qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) [Hint: try checking whether the first non-inlined, non-pure virtual function of class qpid::management::Manageable is defined]

void __Crun::ex_clean() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) qpid::log::Statement::Initializer::Initializer(qpid::log::Statement&) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /export/home/devel/ws/DSLAP/qpid/trunk/qpid/cpp/src/.libs/libqpidcommon.so.0) void __Crun::ex_rethrow() qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void operator delete(void*,void*) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) std::bad_cast::__vtbl qpid/acl/.libs/AclPlugin.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) [Hint: try checking whether the first non-inlined, non-pure virtual function of class std::bad_cast is defined]

void*operator new[](unsigned long) qpid/acl/.libs/AclReader.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void*operator new(unsigned long) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void operator delete[](void*) qpid/acl/.libs/AclData.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1) void operator delete(void*) qpid/acl/.libs/Acl.o (symbol belongs to implicit dependency /usr/lib/sparcv9/libCrun.so.1)
ld: fatal: Symbol referencing errors. No output written to .libs/acl.so
*** Error code 1
make: Fatal error: Command failed for target `acl.la'


Reply via email to