non-standard glibc location

Sandi Cimerman sandi.cimerman.umcg at gmail.com
Thu Sep 29 14:00:55 EDT 2022


On Friday, September 8, 2017 at 3:16:12 AM UTC+2, Fetchinson . wrote:
> On 9/7/17, Thomas Jollans <tj... at tjol.eu> wrote: 
> > On 2017-09-06 16:14, Fetchinson . via Python-list wrote: 
> >> Hi folks, 
> >> 
> >> I'm trying to install a binary package (tensorflow) which contains 
> >> some binary C extensions. Now my system glibc is 2.15 but the binaries 
> >> in the C extensions were created (apparently) with glibc 2.17. So I 
> >> thought no problemo I installed glibc 2.17 to a custom location, built 
> >> python2.7 from source (hopefully using my custom glibc) and installed 
> >> pip and everything else using this custom built python. But still when 
> >> I try to import tensorflow I get: 
> >> 
> >> ImportError: /lib64/libc.so.6: version `GLIBC_2.17' not found 
> >> (required by 
> >> /home/nogradi/fetch/custom/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so) 
> >> 
> >> So apparently it's trying to use my system glibc, not the custom one. 
> >> 
> >> How do I tell this extension to use the custom glibc? Is it even 
> >> possible? 
> > 
> > It's going to use the same libc as python, so first of all check which 
> > libc your python interpreter is actually linked to. Maybe your custom 
> > build didn't do quite what you wanted. 
> > 
> > ldd `which python` # or something like that 
> > 
> > Once you've convinced yourself that python has the correct libc, you 
> > could try building tensorflow from source rather than installing the 
> > binaries. 
> > 
> > Maybe something in here helps: 
> > https://github.com/tensorflow/tensorflow/issues/53
> Thanks a lot for all the comments, my problem was indeed that the 
> compiled python was still using the system glibc. The solution was to 
> set the environment variables 
> 
> p=/path/to/custom/glibc 
> export CFLAGS=-I${p}/include 
> export LDFLAGS="-Wl,--rpath=${p}/lib 
> -Wl,--dynamic-linker=${p}/lib/ld-linux-x86-64.so.2" 
> 
> And then the compiled python was using the new glibc. 
> 
> Side note 1 on tensorflow: the compiled tensorflow binary uses unicode 
> ucs4, so for python I had to ./configure --enable-unicode=ucs4 because 
> the default is ucs2 
> 
> Side note 2 on tensorflow: it also depends on libstdc++ and my version 
> was too old for that as well. Instead of compiling gcc from source 
> (which includes libstdc++) I copied a binary libstdc++ from a newer 
> linux distro and it was working fine. 
> 
> And the reason, if anyone cares, I had to go through the above is that 
> I couldn't compile tensorflow from source. 
> 
> Thanks again, 
> Daniel
> > 
> >> 
> >> But maybe I have an even more basic issue: how do I link python not 
> >> with the system glibc but with my custom glibc? 
> >> 
> >> Cheers, 
> >> Daniel 
> >> 
> >> 
> >> 
> > 
> > 
> > -- 
> > Thomas Jollans
> > -- 
> > https://mail.python.org/mailman/listinfo/python-list
> > 
> 
> 
> -- 
> Psss, psss, put it down! - http://www.cafepress.com/putitdown

First of all, thank you a lot Fetchinson, it helped on my system (Centos 6) to today recompile the newest Python (3.10.7)!
Of course I had foss2018 available on the system, so I "just" had to compile glibc, zlib, and openssl 1.1.1q ... but hey it was worth it! I have my environment up and running!

FYI:
1. to me it helped that since I had nonstandard openssl location to edit Modules/Setup.dist as suggested here https://stackoverflow.com/questions/5937337/building-python-with-ssl-support-in-non-standard-location
2. to me it helped to configure with
./configure --with-libc=/tmp/glibc/lib/libc.so --prefix=/tmp/python --with-openssl=/tmp/openssl

Hope this helps someone else who will try to do the same.

Cheers


More information about the Python-list mailing list