Open kesinger opened 2 years ago
Are you using the quickbuild.sh
or admin/builders/ubuntu64_build.sh
scripts, or are you running CMake directly?
Looks like the ProteoWizard and Boost libraries were compiled without "Position Independent Code" enabled. You can check if this is the case by running:
objdump -r /home/user/outside/build/ubuntu64/tools/lib/libpwiz_data_msdata_core.a
If there are no relocation records (https://stackoverflow.com/questions/3507296/is-there-a-way-to-determine-that-a-a-or-so-library-has-been-compiled-as-positi) this means that something went wrong in building the ProteoWizard libraries.
One way to circumvent these errors could be to add the following line at the end of CommonCMake.txt
to force a non position independent executable (PIE):
set(CMAKE_EXE_LINKER_FLAGS "-no-pie")
I was running quickbuild.sh.
Adding the cmake flag fixed the PIE problems, but now I'm getting undefined references:
../maracluster/libmaraclusterlibrary.a(MSFileMerger.cpp.o): In function maracluster::MSFileMerger::mergeSpectraSmall()': MSFileMerger.cpp:(.text+0x6fb0): undefined reference to
pwiz::msdata::DataProcessing::DataProcessing(std::cxx11::basic_string<char, std::char_traits
Thanks for your help!
Playing around with this a bit more, the maracluster .a files have defined symbols ('T" in the output of nm) for pwiz:msdata:DataProcessing::DataProcessing(std::string const&), but what's being asked for is pwiz::msdata::DataProcessing::DataProcessing(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)
Stackoverflow suggests this is due to _GLIBCXX_USE_CXX11_ABI being set somewhere, I'll try digging around for that.
UPDATE: Adding -D _GLIBCXX_USE_CXX11_ABI=0 to CXX_FLAGS fixes it.
Thanks!
I'm trying to build quandenser, and am running into linking errors. Typical messages are:
/usr/bin/ld: /home/user/outside/build/ubuntu64/tools/lib/libpwiz_data_msdata_core.a(References.o): relocation R_X86_64_32S against hidden symbol
_ZN5boost6detail15sp_counted_base7destroyEv' can not be used when making a PIE object /usr/bin/ld: /home/user/outside/build/ubuntu64/tools/lib/libpwiz_data_msdata_core.a(SpectrumWorkerThreads.o): relocation R_X86_64_32 against symbol
__pthread_key_create@@GLIBC_2.2.5' can not be used when making a PIE object; recompile with -fPICThere are several dozen such messages, all for libboost and libpwiz.
I'm also getting 'final link failed:Symbol needs debug section which does not exist' and undefined references to pwiz in libaraclusterlibrary.a's 'SpectrumHandler.cpp.o'.