The mystery of the missing library.
David Naylor
dbn at freebsd.org
Tue Jul 28 18:46:11 UTC 2015
Hi Hackers,
I am busy simplifying the lang/pypy port (see
https://reviews.freebsd.org/D3209) however I have uncovered a rather
strange problem:
## BACKGROUND ##
PyPy has it's own directory layout so we install it into $PREFIX/pypy-2.6. In
there is everything pypy needs including bin/pypy (the binary) and
bin/libpypy-c.so (the shared library).
For convenience we create a symlink to the pypy binary:
```
# ln -s ../pypy-2.6/bin/pypy $PREFIX/bin/pypy
```
## PROBLEM ##
For some reason FreeBSD cannot find the library when executing the
pypy command - except under some situations:
```
# uname -a
FreeBSD dragon.local 10.1-RELEASE-p10 FreeBSD 10.1-RELEASE-p10 #0:
Wed May 13 06:54:13 UTC 2015 root at amd64-
builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
# cd /
# pypy
Shared object "libpypy-c.so" not found, required by "pypy"
# `which pypy`
Shared object "libpypy-c.so" not found, required by "pypy"
# .`which pypy`
Python 2.7.9 (295ee98b69288471b0fcf2e0ede82ce5209eb90b, Jul 26
2015, 18:38:23)
[PyPy 2.6.0 with GCC 4.2.1 Compatible FreeBSD Clang 3.4.1
(tags/RELEASE_34/dot1-final 208032)] on freebsd10
Type "help", "copyright", "credits" or "license" for more information.
>>>>
# ldd `which pypy`
/usr/local/bin/pypy:
libpypy-c.so => not found (0)
libthr.so.3 => /lib/libthr.so.3 (0x80081d000)
libc.so.7 => /lib/libc.so.7 (0x800a42000)
# ldd .`which pypy`
./usr/local/bin/pypy:
libpypy-c.so => /usr/local/pypy-2.6/bin//libpypy-c.so (0x80081d000)
libthr.so.3 => /lib/libthr.so.3 (0x804337000)
libc.so.7 => /lib/libc.so.7 (0x80455c000)
libbz2.so.4 => /usr/lib/libbz2.so.4 (0x804906000)
libm.so.5 => /lib/libm.so.5 (0x804b18000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x804d40000)
libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x804f4a000)
libz.so.6 => /lib/libz.so.6 (0x805170000)
libssl.so.7 => /usr/lib/libssl.so.7 (0x805386000)
libcrypto.so.7 => /lib/libcrypto.so.7 (0x8055f1000)
libffi.so.6 => /usr/local/lib/libffi.so.6 (0x8059e5000)
libcrypt.so.5 => /lib/libcrypt.so.5 (0x805bec000)
librt.so.1 => /usr/lib/librt.so.1 (0x805e0c000)
libutil.so.9 => /lib/libutil.so.9 (0x806012000)
libncurses.so.8 => /lib/libncurses.so.8 (0x806224000)
```
Why would the shared library be found when using a relative path but not
when using an absolute path? Is this a bug in FreeBSD?
Regards
David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 949 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freebsd.org/pipermail/freebsd-python/attachments/20150728/e8a18eca/attachment.bin>
More information about the freebsd-python
mailing list