problem with different versions of linux

230 views
Skip to first unread message

Rishi Khare

unread,
Jul 19, 2007, 8:18:16 AM7/19/07
to PyInstaller
hi all,
we are facing some problem while running our application on
different versions of linux.
we have an application which uses python-2.4.4 , matplotlib-0.90.0 ,
numpy-1.0.1, and numarray.
we have mainly 2 different types of linux boxes , one older ones with
kernel 2.4.21-47, gcc-3.2.3 (Red Hat Linux 3.2.3-56) and other newer
ones with kernel 2.6.9-42,gcc-3.4.6 (Red Hat 3.4.6-3)

we need a wide python to support unicode so we install it from source
with ./configure --prefix=$prefix --enable-unicode=ucs4 and then we
install all other modules via python setup.py install

when we create the executable on older machine, it runs fine on older
machine but on newer machine it fails with this message

>> relocation error: /tmp/_MEI21064/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE >> not defined in file ld-linux.so.2 with link time reference

and if we create the executable on a newer machine then it runs fine
on newer machine but fails on the older machine with this message

>> relocation error: /tmp/_MEI9475/libc.so.6: symbol _rtld_global_ro, version GLIBC_PRIVATE >> not defined in file ld-linux.so.2 with link time reference

ld-linux.so.2 is at the same place on both machines /lib/ld-linux.so.2

any suggestions/solutions how to solve this?any small hints will also
be of a great help, we need to fix this badly :)

--Thanks

Rishi Khare

unread,
Jul 19, 2007, 8:27:04 AM7/19/07
to PyInstaller
just to add we are using pyinstaller-1.3 and creating an elf version
of executable with one file option.

Rishi Khare

unread,
Jul 20, 2007, 4:58:11 PM7/20/07
to PyInstaller
finally we are able to solve it,
the solution was to avoid packing the libc.so.6 in the executable so
that it searches for it in the client machine and uses the version it
finds there,
that version would be compatible with ld-linux.so found on that
machine.

to accomplish this there are many approaches , we followed a basic
approach where we banned any lib from paths like /usr/lib , /lib and /
lib/tls
go to pyinstaller-1.3/bindepend.py and there is a default exclusion
list, just add /lib/tls or any other path which you want to block,
then run Configure.py
this will generate a config.dat which will not have any entry
corresponding to those libs, you can choose to modify the config.dat
also but that didnt worked for us.
now use your Build.py as usual.

--Thanks
Rishi Khare

Reply all
Reply to author
Forward
0 new messages