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

Reply via email to