ACLiC problem (ROOT v5-32-01) on CentOS 6.2 x86_64 SMP

I just started to use CentOS 6.2 x86_64 SMP with gcc 4.4.6.
I was able to compile ROOT v5-32-01 (except for a problem with “qtcint.so”, which I reported elsewhere).

I’ve got a strange problem, however.
I cannot precompile anything with ACLiC.
No matter what I try, I get (note: these messages look pretty much the same as these related to the “qtcint.so” building problem):

[code]root [0] .L MyClass.hxx++
Info in TUnixSystem::ACLiC: creating shared library /…/./MyClass_hxx.so
/…/MyClass_hxx_ACLiC_dict.o: In function global constructors keyed to MyClass_hxx_ACLiC_dict.cxx': MyClass_hxx_ACLiC_dict.cxx:(.text+0x2c2): undefined reference toG__add_setup_func’
MyClass_hxx_ACLiC_dict.cxx:(.text+0x2c7): undefined reference to G__call_setup_funcs' /.../MyClass_hxx_ACLiC_dict.o: In functionG__cpp_setup_tagtableMyClass_hxx_ACLiC_dict’:
MyClass_hxx_ACLiC_dict.cxx:(.text+0x2fc): undefined reference to G__get_linked_tagnum_fwd' MyClass_hxx_ACLiC_dict.cxx:(.text+0x308): undefined reference toG__get_linked_tagnum_fwd’
MyClass_hxx_ACLiC_dict.cxx:(.text+0x314): undefined reference to `G__get_linked_tagnum_fwd’

(… tons of messages …)

MyClass_hxx_ACLiC_dict.cxx:(.text+0x16c8): undefined reference to G__int' MyClass_hxx_ACLiC_dict.cxx:(.text+0x171d): undefined reference toG__double’
MyClass_hxx_ACLiC_dict.cxx:(.text+0x1787): undefined reference to G__int' MyClass_hxx_ACLiC_dict.cxx:(.text+0x17ee): undefined reference toG__int’
/…/MyClass_hxx_ACLiC_dict.o: In function G__MyClass_hxx_ACLiC_dict_3012_0_3(G__value*, char const*, G__param*, int)': MyClass_hxx_ACLiC_dict.cxx:(.text+0x193c): undefined reference toG__getgvp’
MyClass_hxx_ACLiC_dict.cxx:(.text+0x1944): undefined reference to G__getstructoffset' MyClass_hxx_ACLiC_dict.cxx:(.text+0x194c): undefined reference toG__getaryconstruct’
MyClass_hxx_ACLiC_dict.cxx:(.text+0x196b): undefined reference to G__setgvp' MyClass_hxx_ACLiC_dict.cxx:(.text+0x1984): undefined reference toG__setgvp’
MyClass_hxx_ACLiC_dict.cxx:(.text+0x198c): undefined reference to G__setnull' MyClass_hxx_ACLiC_dict.cxx:(.text+0x19c2): undefined reference toG__setgvp’
/…/MyClass_hxx_ACLiC_dict.o: In function G__setup_memfuncMyClass()': MyClass_hxx_ACLiC_dict.cxx:(.text+0x5d0): undefined reference toG__tag_memfunc_reset’
/…/MyClass_hxx_ACLiC_dict.o: In function G__cpp_setup_funcMyClass_hxx_ACLiC_dict': MyClass_hxx_ACLiC_dict.cxx:(.text+0xf2e): undefined reference toG__resetifuncposition’
/…/MyClass_hxx_ACLiC_dict.o: In function G__cpp_setup_globalMyClass_hxx_ACLiC_dict': MyClass_hxx_ACLiC_dict.cxx:(.text+0xf4e): undefined reference toG__resetglobalenv’
/…/MyClass_hxx_ACLiC_dict.o: In function G__cpp_setup_typetableMyClass_hxx_ACLiC_dict': MyClass_hxx_ACLiC_dict.cxx:(.text+0x10f3): undefined reference toG__setnewtype’
/…/MyClass_hxx_ACLiC_dict.o: In function G__cpp_setup_initMyClass_hxx_ACLiC_dict::~G__cpp_setup_initMyClass_hxx_ACLiC_dict()': MyClass_hxx_ACLiC_dict.cxx:(.text._ZN39G__cpp_setup_initMyClass_hxx_ACLiC_dictD2Ev[_ZN39G__cpp_setup_initMyClass_hxx_ACLiC_dictD5Ev]+0x8): undefined reference toG__remove_setup_func’
collect2: ld returned 1 exit status
Error in : Compilation failed![/code]
BTW. This problem does not exist on Ubuntu 10.04.4 LTS i686 SMP with gcc 4.4.3.

I believe “libCint.so” is missing in two command lines, when ACLiC tries to link the shared library “MyClass_hxx.so” and the magic “MyClass_hxx_ACLiC_exec” (which I cannot locate afterwards, even if I set “gDebug = 99”): cd /... ; g++ -c -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -pthread -I/MyRoot/v5-32-01/include -I/MyRoot/v5-32-01/include -I/... -I/... -D__ACLIC__ /.../MyClass_hxx_ACLiC_dict.cxx ; g++ /.../MyClass_hxx_ACLiC_dict.o -shared -Wl,-soname,MyClass_hxx.so -m64 -O2 -Wl,--no-undefined /lib64/libfreebl3.so /MyRoot/v5-32-01/lib/libCore.so /MyRoot/v5-32-01/lib/libRint.so /MyRoot/v5-32-01/lib/libMathCore.so /MyRoot/v5-32-01/lib/libThread.so /MyRoot/v5-32-01/lib/libRIO.so -o /..././MyClass_hxx.so cd /... ; g++ -c -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -pthread -I/MyRoot/v5-32-01/include -I/MyRoot/v5-32-01/include -I/... -I/... -D__ACLIC__ /.../MyClass_hxx_ACLiC_dict.cxx; g++ /.../MyClass_hxx_ACLiC_dict.o -m64 -O2 -Wl,--no-undefined -o /.../MyClass_hxx_ACLiC_exec /lib64/libfreebl3.so /MyRoot/v5-32-01/lib/libCore.so /MyRoot/v5-32-01/lib/libRint.so /MyRoot/v5-32-01/lib/libMathCore.so /MyRoot/v5-32-01/lib/libThread.so /MyRoot/v5-32-01/lib/libRIO.so -lm -ldl -pthread -rdynamic

Hi Pepe,

What is the content of $ROOTSYS/include/compiledata.h?

Cheers,
Philippe.

/* This is file is automatically generated */ #define BUILD_ARCH "linuxx8664gcc" #define BUILD_NODE "Linux My.Host.My.Domain 2.6.32-220.4.2.el6.x86_64 #1 SMP Tue Feb 14 04:00:16 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux" #define COMPILER "/usr/bin/g++" #define COMPILERVERS "gcc446" #define MAKESHAREDLIB "cd $BuildDir ; g++ -c $Opt -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -pthread $IncludePath $SourceFiles ; g++ $ObjectFiles -shared -Wl,-soname,$LibName.so -m64 -O2 -Wl,--no-undefined $LinkedLibs -o $SharedLib" #define MAKEEXE "cd $BuildDir ; g++ -c -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -pthread $IncludePath $SourceFiles; g++ $ObjectFiles -m64 -O2 -Wl,--no-undefined -o $ExeName $LinkedLibs -lm -ldl -pthread -rdynamic" #define CXXOPT "-O2" #define CXXDEBUG "-g" #define ROOTBUILD "" #define LINKEDLIBS "-L$ROOTSYS/lib -lCore -lCint -lRint " #define INCLUDEPATH "-I$ROOTSYS/include" #define OBJEXT "o" #define SOEXT "so"

Hi,

I don’t see any good reason why libCint is not being listed in the ACLiC command line … What does gSystem->GetLibraries("") returns?

Cheers,
Philippe.

root [0] gSystem->GetLibraries("")
(const char* 0x13f0f40)"/lib64/libfreebl3.so /opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01/lib/libCore.so /opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01/lib/libRint.so /opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01/lib/libMathCore.so"

Hi Pepe,

And what doesldd $ROOTSYS/bin/root.exe returns (I.e. the protected method TUnixSystem::GetLinkedLibraries seems to not returns the right information on this platform).

Philippe.

-bash-4.1$ export|grep ROOTSYS declare -x ROOTSYS="/opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01" -bash-4.1$ ldd $ROOTSYS/bin/root.exe linux-vdso.so.1 => (0x00007fff28fe7000) libCore.so.5.32 => /opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01/lib/libCore.so.5.32 (0x00007fe4ec696000) libCint.so.5.32 => /opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01/lib/libCint.so.5.32 (0x00007fe4ebd15000) libRint.so.5.32 => /opt/ROOT/CentOS62_x86_64_gcc446/root/v5-32-01/lib/libRint.so.5.32 (0x00007fe4ebae1000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003425200000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003428200000) libm.so.6 => /lib64/libm.so.6 (0x0000003424a00000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003427600000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003424e00000) libc.so.6 => /lib64/libc.so.6 (0x0000003424600000) libz.so.1 => /lib64/libz.so.1 (0x0000003425a00000) libpcre.so.0 => /lib64/libpcre.so.0 (0x0000003429a00000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003427e00000) /lib64/ld-linux-x86-64.so.2 (0x0000003424200000) libfreebl3.so => /lib64/libfreebl3.so (0x0000003427a00000)

Hi Pepe,

This is actually linked so the --enable-soversion. Can you please submit a savannah report on this issue?

Thanks,
Philippe.

Here’s the “config.log” extract:
Enabled support for afdsmgrd, asimage, astiff, builtin_afterimage, builtin_ftgl, builtin_glew, builtin_lzma, cintex, exceptions, explicitlink, fftw3, gdml, genvector, gsl_shared, krb5, mathmore, memstat, minuit2, mysql, opengl, python, qt, qtgsi, reflex, roofit, shadowpw, shared, soversion, ssl, table, tmva, unuran, x11, xft, xml.

I don’t have any account on your Savannah, so maybe it would be good if you created an appropriate entry there.

Hi Pepe,

Given your very helpful involvement, I recommend that you create an account on savannah, which is quite easy (see savannah.cern.ch/account/register.php). This will enhance the tracking of some the issues you finding along the way :slight_smile:.

Thanks,
Philippe.

I feel I’d like to report another problem here …
I tried another machine … Ubuntu 10.04.4 LTS i686 SMP, gcc 4.4.3.
The ‘$ROOTSYS/include/compiledata.h’ contains:
#define LINKEDLIBS “-L$ROOTSYS/lib -lCore -lCint -lRint “
but the 'gSystem->GetLibraries(””)’ returns:
(const char* 0x855ae98)"-lRint -lCint -lCore -L$ROOTSYS/lib /opt/ROOT/Ubuntu1004_gcc443/root/v5-32-01/lib/libCore.so /opt/ROOT/Ubuntu1004_gcc443/root/v5-32-01/lib/libRint.so /opt/ROOT/Ubuntu1004_gcc443/root/v5-32-01/lib/libMathCore.so"
Don’t you think that the ‘-L$ROOTSYS/lib’ flag is in a completely wrong place?
This bug is present at least in ROOT 5.28, 5.30 and 5.32.

[quote]Don’t you think that the ‘-L$ROOTSYS/lib’ flag is in a completely wrong place?
[/quote]Yes that seems awkward (and actually now somewhat unnecessary since the library are listed with their full pathname.

Philippe.

The ‘libCint.so’ is NOT there (and there’s an additional ‘libMathCore.so’).

Hi Pepe,

The problem with --enable-soversion seems to be on all platforms …

Philippe.

I had the same problem on SLC5 X86_64 SMP using ROOT 5.32/01 when I am trying to compile macros with ACLIC.

I found that doing: gSystem->Load(“libCint”) compiles without problems.

Cheers,
Mihai

The problem still exists in the newest ROOT v5-32-02.
As suggested by Philippe, removing the recommended “–enable-soversion” flag (when running the “configure” step) helps.

Hi,

this issue should be fixed in the trunk, soversion’ed ROOT build will work with ACliC.

Cheers, Fons.

According to some message (that I found elsewhere, don’t remember where), v5-32 is the last version that supports gcc 3.4 (and another gcc 3.x compilers). Would it be possible that you increase the “level of maintenance” for it?