New submission from Andy Salnikov: Hi,
when trying to build extension modules with distutils I ran into a problem that linking fails with an errors like: gcc -pthread -shared -L build/temp.linux-x86_64-2.7/h5py/defs.o -L/reg/g/psdm/sw/external/hdf5/1.8.4p1/x86_64-rhel6-gcc44-opt/lib -L. -Wl,-R/reg/g/psdm/sw/external/hdf5/1.8.4p1/x86_64-rhel6-gcc44-opt/lib -lhdf5 -lpython2.7 -o build/lib.linux-x86_64-2.7/h5py/defs.so /usr/bin/ld: cannot find -lpython2.7 collect2: ld returned 1 exit status For some reason location of the python library is not added to the command line with -L option. I tracked the reason down to a particular environment that we have, in out environment python executable found in a $PATH is a symbolic link to a binary installed in some non-standard location. I believe this piece of code in build_ext.py fails to realize this: if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) else: # building python standard extensions self.library_dirs.append('.') apparently sys.executable in our case refers to a symlink path, while sys.exec_prefix refers to actual installation directory. I think fix for our case should be easy (I can't say about other cases which may be broken by this logic), one just need to apply os.path.realpath() to sys.executable before comparing it to sys.exec_prefix. Andy ---------- assignee: eric.araujo components: Distutils messages: 173796 nosy: Andy.Salnikov, eric.araujo, tarek priority: normal severity: normal status: open title: distutils build_ext fails to set library_dirs in 2.7.2 on Linux type: compile error versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue16326> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com