Compiling ROOT v6.18.04 failed when linking shared library lib/libROOTDataFrame.so.6.18.04

Dear all,

I am trying to compile ROOT v6.18.04 on CentOS 7.7 with gcc 7.3.0. After a successful configuration, and most (if not all) the compilation successful, the linking eventually fails with the following error message [1].

As far as I understand the issue, it seems that while trying to link ‘libROOTDataFrame.so’ with the various required libraries, the linking fails due to the [system] libsqlite3.so library. See:
/usr/lib/libsqlite3.so: error adding symbols: File in wrong format

It is the first time I see such error, but I would think that the system libsqlite3.so library is too old to be successfully linked. I searched a bit but I could not find any versions dependency.

What do you think? Does anyone know how to fix this?

Thank you in advance,
Regards,

Sébastien

[1]:
[7869/8806] Linking CXX shared library lib/libROOTDataFrame.so.6.18.04
FAILED: lib/libROOTDataFrame.so.6.18.04 
: && /pbs/software/centos-7-x86_64/gcc/7.3.0/bin/g++ -fPIC -std=c++11 -Wno-implicit-fallthrough -Wno-noexcept-type -pipe  -Wshadow -Wall -W -Woverloaded-virtual -fsigned-char -pthread -DR__HAVE_CONFIG -O3 -g -DNDEBUG  -Wl,--no-undefined -Wl,--hash-style="both" -shared -Wl,-soname,libROOTDataFrame.so.6.18 -o lib/libROOTDataFrame.so.6.18.04 tree/dataframe/CMakeFiles/ROOTDataFrame.dir/G__ROOTDataFrame.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RActionBase.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RColumnValue.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RCsvDS.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RCustomColumnBase.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RCutFlowReport.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDataFrame.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFActionHelpers.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFBookedCustomColumns.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFDisplay.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFGraphUtils.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFHistoModels.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFInterfaceUtils.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFUtils.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RFilterBase.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RJittedAction.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RJittedCustomColumn.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RJittedFilter.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RLoopManager.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RRangeBase.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RRootDS.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RSlotStack.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RTrivialDS.cxx.o tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RSqliteDS.cxx.o  -Wl,-rpath,/pbs/throng/ccin2p3/support/gadrat/software/centos-7-x86_64/root/build_v6-18-04/lib: lib/libTreePlayer.so.6.18.04 lib/libROOTVecOps.so.6.18.04 /usr/lib/libsqlite3.so lib/libRDAVIX.so.6.18.04 lib/libTree.so.6.18.04 lib/libGraf3d.so.6.18.04 lib/libGpad.so.6.18.04 lib/libGraf.so.6.18.04 lib/libHist.so.6.18.04 lib/libMatrix.so.6.18.04 lib/libMathCore.so.6.18.04 lib/libImt.so.6.18.04 lib/libMultiProc.so.6.18.04 lib/libNet.so.6.18.04 lib/libRIO.so.6.18.04 lib/libThread.so.6.18.04 lib/libCore.so.6.18.04 -lpthread && :
/usr/lib/libsqlite3.so: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status

ROOT Version: v6.18.04
Platform: CentOS Linux release 7.7.1908 (Core)
Compiler: gcc (GCC) 7.3.0


I think @oshadura and @amadio can help you.

For me it looks like there is a problem with sqlite3 (I expect it is 32bit version, and maybe you have 64bit in /usr/lib64/?). Do you need sqlite support? Can you try please to build with CMake flags -Dsqlite=OFF?

Hi!

Yes, it indeed works if I turn off the sqlite flag on the cmake command.

I usually try to build ROOT with most of the options enabled, as we are then deploying it for users on our clusters (so we have a complete installation). I have deployed that version, let’s hope that nobody needs sqlite… If this is the case, I guess I will have to compile & install a new one.

Thanks guys!
Regards,

Sébastien

/usr/lib/libsqlite3.so” suggests that you have “sqlite-devel.i686” installed while you need “sqlite-devel.x86_64” (and then there will be “/usr/lib64/libsqlite3.so”).

Great point! You pointed out a misconfiguration on my compilation machine Vs the rest of the cluster!

On my interactive machine used for compilation, I have:
$ yum list|grep sqlite
sqlite.i686 3.7.17-8.el7 @centos-base
sqlite.x86_64 3.7.17-8.el7 @anaconda
sqlite-devel.i686 3.7.17-8.el7 @centos-base

On the other machines:
$ yum list |grep sqlite
sqlite.i686 3.7.17-8.el7 @centos-base
sqlite.x86_64 3.7.17-8.el7 @anaconda
sqlite-devel.i686 3.7.17-8.el7 @centos-base
sqlite-devel.x86_64 3.7.17-8.el7 @centos-base

Thanks a lot! Problem solved!
Regards,

Sébastien

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.