I compile root on my Debian system with the option:
./configure linux --disable-pgsql
(leaving out --disable-pgsql results in a compilation error). After installation trying to load the attached script results in an interesting warning:
root [0] .L fit.data.C
Attempt to add function operator+ failed - ifunc_table overflow!
Attempt to add function operator/ failed - ifunc_table overflow!
Attempt to add function MK_MSG failed - ifunc_table overflow!
Attempt to add function GET_MSG failed - ifunc_table overflow!
Attempt to add function GET_SUBMSG failed - ifunc_table overflow!
but my assumption was that they should be dynamically loaded… or am I wrong? I will in any case add to my script the loading of the libGpad.
Thanks for the advice.
I recompiled my root without the option --disable-pgsql and the compilation output is:
==> lib/libRMySQL.so done
bin/rmkdepend -R -fpgsql/src/TPgSQLResult.d -Y -w 1000 – -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/postgresql -D__cplusplus – pgsql/src/TPgSQLResult.cxx
g++ -O2 -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/postgresql -DUSEPCH -include precompile.h -o pgsql/src/TPgSQLResult.o -c pgsql/src/TPgSQLResult.cxx
bin/rmkdepend -R -fpgsql/src/TPgSQLRow.d -Y -w 1000 – -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/postgresql -D__cplusplus – pgsql/src/TPgSQLRow.cxx
g++ -O2 -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/postgresql -DUSEPCH -include precompile.h -o pgsql/src/TPgSQLRow.o -c pgsql/src/TPgSQLRow.cxx
bin/rmkdepend -R -fpgsql/src/TPgSQLServer.d -Y -w 1000 – -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/postgresql -D__cplusplus – pgsql/src/TPgSQLServer.cxx
g++ -O2 -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/postgresql -DUSEPCH -include precompile.h -o pgsql/src/TPgSQLServer.o -c pgsql/src/TPgSQLServer.cxx
pgsql/src/TPgSQLServer.cxx: In member function ‘virtual TSQLStatement* TPgSQLServer::Statement(const char*, Int_t)’:
pgsql/src/TPgSQLServer.cxx:347: error: ‘struct PGSQL_STMT’ has no member named ‘conn’
pgsql/src/TPgSQLServer.cxx:348: error: ‘struct PGSQL_STMT’ has no member named ‘res’
pgsql/src/TPgSQLServer.cxx:350: error: ‘struct PGSQL_STMT’ has no member named ‘res’
pgsql/src/TPgSQLServer.cxx:355: error: ‘struct PGSQL_STMT’ has no member named ‘res’
pgsql/src/TPgSQLServer.cxx:356: error: ‘struct PGSQL_STMT’ has no member named ‘conn’
make: *** [pgsql/src/TPgSQLServer.o] Error 1
rm utils/src/rootcint_tmp.cxx utils/src/RStl_tmp.cxx
I have the same problem and load the libGpad in my case works. Is possible solve this problem avoiding to load in any script the gSystem->Load(“libGpad”) call?
the library is auto-loaded - this is not the problem. It’s an old bug, caused by CINT setting up both the macro’s functions and the auto-loaded libraries’ functions at the same time, and falling over its own feet.
I believe I have a fix now. I’ll upload it to CVS in the coming days; it needs a bit testing first. I will let you know.
as a less intrusive work-around you can declare a variable of the type that triggers auto-loading before you use a function parameter of that type. E.g. put [code]void dummy_for_loading() {
TCanvas* dummy_to_trigger_autoloading;}
void myActualFunction(TCanvas* v) {…[/code]
But it remains an ugly bug and I’m working on a solution.
Axel.