build a static python executable on linux?

A

Alexandre Gillet

Hi,

I am trying to build a python interpreter that is static link.
My python interpreter was build on RedHat 8.0 using gcc 2.3 and GLIBC 2.3
When running on other linux flavor that still have GLIBC 2.2, the
interpreter won't start. (error message: /lib/libc.so.6: version
`GLIBC_2.3' not found (required by /mgl/python/i86Linux2/bin/python2.3)

Is there a way to build a static python interpreter using gcc 2.3 that
can run on any machine and won't need a shared library at runtime?

I want to be able to build my interpreter on my redhat machine and
distribute my executable that can then be run on other machine without
having to worry about the version of glibc.

Thanks for any help or idea in advances.

Alex
(e-mail address removed)
 
C

Christos TZOTZIOY Georgiou

I am trying to build a python interpreter that is static link.
My python interpreter was build on RedHat 8.0 using gcc 2.3 and GLIBC 2.3
When running on other linux flavor that still have GLIBC 2.2, the
interpreter won't start. (error message: /lib/libc.so.6: version
`GLIBC_2.3' not found (required by /mgl/python/i86Linux2/bin/python2.3)

I believe you should install the glibc-static-devel package and then
find the approprate options for gcc (my noisy linux computer is turned
off now so I can't man gcc, but IIRC is -static :) in order to build a
static python.
 
A

Alexandre Gillet

I am able to compile a static interpreter (using -static -static-libgcc)
but I can not build the extensions correctly.
When I import an extensions (ie Tkinter, readline) I get undefine
symbol error. It seems the symbol should be define in glibc but the
extensions can't seems to find it.

Any ideas how I should built the extensions

Thanks
Alex
 
S

Skip Montanaro

Alex> I am able to compile a static interpreter (using -static
Alex> -static-libgcc) but I can not build the extensions correctly.

You effectively need to transport yourself back in time before distutils
existed, and modify Modules/Setup (or more correctly, Modules/Setup.local)
appropriately to define the build commands for all the extension modules you
want to include in your interpreter. It's a little tedious the first time
(it will probably take a few iterations to get everything correct), but once
you get the hang of it, it's easy to do. Use the compile and link commands
output by distutils to give yourself a head start on -I, -L and -l flags to
include in your definitions. Many of the commented out definitions are
probably also close.

If you identify some modules with no commented out build definitions in the
Setup file, please file a bug report on SourceForge.

Skip
 
M

Michael Hudson

Alexandre Gillet said:
I am able to compile a static interpreter (using -static
-static-libgcc) but I can not build the extensions correctly.
When I import an extensions (ie Tkinter, readline) I get undefine
symbol error. It seems the symbol should be define in glibc but the
extensions can't seems to find it.

Any ideas how I should built the extensions

By editing Modules/Setup, I suspect.

Cheers,
mwh
 
A

Alexandre Gillet

Thanks for the hints.
But I think it will too much work to do now and not enough time. So I
will probably build my interperter with a older version of glibc so I am
sure it will run on all the linux platform and not only the one using
glibc 2.3

Thanks
Alex

Skip said:
Alex> I am able to compile a static interpreter (using -static
Alex> -static-libgcc) but I can not build the extensions correctly.

You effectively need to transport yourself back in time before distutils
existed, and modify Modules/Setup (or more correctly, Modules/Setup.local)
appropriately to define the build commands for all the extension modules you
want to include in your interpreter. It's a little tedious the first time
(it will probably take a few iterations to get everything correct), but once
you get the hang of it, it's easy to do. Use the compile and link commands
output by distutils to give yourself a head start on -I, -L and -l flags to
include in your definitions. Many of the commented out definitions are
probably also close.

If you identify some modules with no commented out build definitions in the
Setup file, please file a bug report on SourceForge.

Skip

--
o Alexandre Gillet email: (e-mail address removed)
/ The Scripps Research Institute,
o Dept. Molecular Biology, MB-5,
\ 10550 North Torrey Pines Road,
o La Jolla, CA 92037-1000, USA.
/ tel: (858) 784-2053
o fax: (858) 784-2860
 
A

Alexandre Gillet

Thanks for the hints.
But I think it will too much work to do now and not enough time. So I
will probably build my interperter with a older version of glibc so I am
sure it will run on all the linux platform and not only the one using
glibc 2.3

Thanks
Alex

Skip said:
Alex> I am able to compile a static interpreter (using -static
Alex> -static-libgcc) but I can not build the extensions correctly.

You effectively need to transport yourself back in time before distutils
existed, and modify Modules/Setup (or more correctly, Modules/Setup.local)
appropriately to define the build commands for all the extension modules you
want to include in your interpreter. It's a little tedious the first time
(it will probably take a few iterations to get everything correct), but once
you get the hang of it, it's easy to do. Use the compile and link commands
output by distutils to give yourself a head start on -I, -L and -l flags to
include in your definitions. Many of the commented out definitions are
probably also close.

If you identify some modules with no commented out build definitions in the
Setup file, please file a bug report on SourceForge.

Skip

--
o Alexandre Gillet email: (e-mail address removed)
/ The Scripps Research Institute,
o Dept. Molecular Biology, MB-5,
\ 10550 North Torrey Pines Road,
o La Jolla, CA 92037-1000, USA.
/ tel: (858) 784-2053
o fax: (858) 784-2860
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top