Dear RDKit community, I use the RDKit C++ libraries (version 2019_09_1) in one of my projects and I have a linking problem that I am having a hard time troubleshooting.
When I try to compile and link using the CMake command below * cmake .. -DRDK_INSTALL_INTREE=OFF \ * *-DCMAKE_INSTALL_PREFIX=path/to/rdkit-Release_2019_09_1 \ * *-DBOOST_ROOT= path/to/boost \* *-DBoost_USE_STATIC_LIBS=OFF \ * *-DBOOST_LIBRARYDIR=path/to/boost/lib \ * *-DBoost_NO_SYSTEM_PATHS=ON \ * *-DEIGEN3_INCLUDE_DIR=/path/to/eigen-3.3.9 \ * *-DPYTHON_EXECUTABLE=/path/to/python3 \ * *-DRDK_BUILD_PYTHON_WRAPPERS=OFF* I get the following error message: *[ 70%] Linking CXX executable testEnumeration* *CMakeFiles/testEnumeration.dir/Enumerate/testEnumerate.cpp.o: In function boost::archive::detail::common_oarchive<boost::archive::text_oarchive>::vsave(boost::archive::class_name_type const&)': testEnumerate.cpp:(.text._ZN5boost7archive6detail15common_oarchiveINS0_13text_oarchiveEE5vsaveERKNS0_15class_name_typeE[_ZN5boost7archive6detail15common_oarchiveINS0_13text_oarchiveEE5vsaveERKNS0_15class_name_typeE]+0x32): undefined reference toboost::archive::text_oarchive_implboost::archive::text_oarchive::save(std::string const&)'* *CMakeFiles/testEnumeration.dir/Enumerate/testEnumerate.cpp.o: In function boost::archive::detail::iserializer<boost::archive::text_iarchive, RDKit::EnumerateLibraryBase>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const': testEnumerate.cpp:(.text._ZNK5boost7archive6detail11iserializerINS0_13text_iarchiveEN5RDKit20EnumerateLibraryBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj[_ZNK5boost7archive6detail11iserializerINS0_13text_iarchiveEN5RDKit20EnumerateLibraryBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj]+0x97): undefined reference toboost::archive::text_iarchive_implboost::archive::text_iarchive::load(std::string&)'* *testEnumerate.cpp:(.text._ZNK5boost7archive6detail11iserializerINS0_13text_iarchiveEN5RDKit20EnumerateLibraryBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj[_ZNK5boost7archive6detail11iserializerINS0_13text_iarchiveEN5RDKit20EnumerateLibraryBaseEE16load_object_dataERNS1_14basic_iarchiveEPvj]+0xd9): undefined reference to boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::string&)' CMakeFiles/testEnumeration.dir/Enumerate/testEnumerate.cpp.o: In functionboost::archive::detail::oserializer<boost::archive::text_oarchive, RDKit::EnumerateLibraryBase>::save_object_data(boost::archive::detail::basic_oarchive&, void const*) const':* *testEnumerate.cpp:(.text._ZNK5boost7archive6detail11oserializerINS0_13text_oarchiveEN5RDKit20EnumerateLibraryBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv[_ZNK5boost7archive6detail11oserializerINS0_13text_oarchiveEN5RDKit20EnumerateLibraryBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv]+0x56): undefined reference to boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::string const&)' testEnumerate.cpp:(.text._ZNK5boost7archive6detail11oserializerINS0_13text_oarchiveEN5RDKit20EnumerateLibraryBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv[_ZNK5boost7archive6detail11oserializerINS0_13text_oarchiveEN5RDKit20EnumerateLibraryBaseEE16save_object_dataERNS1_14basic_oarchiveEPKv]+0xa1): undefined reference toboost::archive::text_oarchive_implboost::archive::text_oarchive::save(std::string const&)'* *CMakeFiles/testEnumeration.dir/Enumerate/testEnumerate.cpp.o: In function boost::archive::detail::oserializer<boost::archive::text_oarchive, RDKit::EnumerateLibrary>::save_object_data(boost::archive::detail::basic_oarchive&, void const*) const': testEnumerate.cpp:(.text._ZNK5boost7archive6detail11oserializerINS0_13text_oarchiveEN5RDKit16EnumerateLibraryEE16save_object_dataERNS1_14basic_oarchiveEPKv[_ZNK5boost7archive6detail11oserializerINS0_13text_oarchiveEN5RDKit16EnumerateLibraryEE16save_object_dataERNS1_14basic_oarchiveEPKv]+0x15a): undefined reference toboost::archive::text_oarchive_implboost::archive::text_oarchive::save(std::string const&)'* *CMakeFiles/testEnumeration.dir/Enumerate/testEnumerate.cpp.o: In function void RDKit::EnumerateLibrary::load<boost::archive::text_iarchive>(boost::archive::text_iarchive&, unsigned int)': testEnumerate.cpp:(.text._ZN5RDKit16EnumerateLibrary4loadIN5boost7archive13text_iarchiveEEEvRT_j[_ZN5RDKit16EnumerateLibrary4loadIN5boost7archive13text_iarchiveEEEvRT_j]+0x18a): undefined reference toboost::archive::text_iarchive_implboost::archive::text_iarchive::load(std::string&)'* *collect2: error: ld returned 1 exit status* *make[2]: *** [Code/GraphMol/ChemReactions/testEnumeration] Error 1make[1]: *** [Code/GraphMol/ChemReactions/CMakeFiles/testEnumeration.dir/all] Error 2make: *** [all] Error 2* As far as I can tell, it is an "*undefined reference to undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::string&)'*". Trying to compile and link RDKit using the cmake flag -DRDK_USE_BOOST_SERIALIZATION=OFF works, but it is not enough for my project; undefined references to RDKit::SmartsToMol pop up everywhere in the linking phase. My Boost version is 1.70.0. My question is simple: where do you think I should look at in my Boost or RDKit installation to track where the problem is? It seems something in serialization is not properly done. Any advice would be very much appreciated. Thanks so much! -- ***************************************************** Guilherme Duarte Ramos Matos Ph.D. in Chemistry, UC Irvine (2018) Postdoctoral Associate, Rizzo Lab *****************************************************
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss