Problem making a truly statically linked executable using ROOT

From: Henning Gast <Henning.Gast_at_cern.ch>
Date: Thu, 17 Feb 2005 14:28:17 +0100


Hi,

I tried to compile a programme which basically opens a ROOT file, reads a TTree from it, does something with the data and writes a TTree to another file. However, when I statically link it with ROOT (Version 4.03.02 ), I get the warnings quoted below. The OS is SLC 3.03 using the GNU C library version 2.3. Although an executable is produced, it will immediately crash with an 'Illegal instruction' when run on a system using libc version 2.1. Gdb fails to produce a traceback.

Is there any way to make a "truly statically linked" executable that uses ROOT's functionality?

Thanks,
Henning.

Linker command and output follows:

g++ -static -o backtrace trajek.o igrf.o numdgl.o trans.o tsymod89.o

AMS_Event.o AMS_NtupleStructDef.o AMS_GeoCalculator.o 
AMS_BacktracingResult.o AMS_BacktracingStatistics.o AMS_ParticleField.o 
AMS_ParticleFieldArray.o AMS_EventDict.o  backtrace.o  
-L/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib -lRoot -ldl -lcrypt -lfreetype -lcrypto
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(shl.o)(.text+0x238):
In function `G__dlopen':
: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TSystem.o)(.text+0x6642):
In function `TSystem::CompileMacro(char const*, char const*, char const*, char const*)':
: the use of `tmpnam' is dangerous, better use `mkstemp'
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x2fe1):
In function `TUnixSystem::GetGroupInfo(int)': : Using 'getgrgid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x2d8f):
In function `TUnixSystem::GetGid(char const*)': : Using 'getgrnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x2d2b):
In function `TUnixSystem::GetUid(char const*)': : Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x2de1):
In function `TUnixSystem::GetUserInfo(int)': : Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x511):
In function `TUnixSystem::SetDisplay()': : Using 'gethostbyaddr' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x497b):
In function `TUnixSystem::GetHostByName(char const*)': : Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x4d60):
In function `TUnixSystem::GetServiceByName(char const*)': : Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/net/data_cms/institut_1b/olzem/sw/root/v4.03.02__INTEL32/lib/libRoot.a(TUnixSystem.o)(.text+0x4dd2):
In function `TUnixSystem::GetServiceByPort(int)': : Using 'getservbyport' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking Received on Thu Feb 17 2005 - 14:29:11 MET

This archive was generated by hypermail 2.2.0 : Tue Jan 02 2007 - 14:45:05 MET