Message286907
In setup.py, _dbm links to gdbm_compat only. If gdbm is built as dynamic libraries, libgdbm_compat.so has a NEEDED flag for libgdbm.so, so both symbols in libgdbm and libgdbm_compat can be used. However, as static libraries does not provide such a flag, importing _dbm raises ImportError:
shell@ASUS_Z00E_2:/data/local/tmp $ python3.7m -c 'import _dbm'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: dlopen failed: cannot locate symbol "gdbm_errno" referenced by "/data/local/tmp/python3/usr/lib/python3.7/lib-dynload/_dbm.cpython-37m.so"...
gdbm_errno is a symbol in libgdbm.a.
gdbm manual [1] suggests linking to both libraries, too.
[1] http://www.gnu.org.ua/software/gdbm/manual/html_node/Compatibility.html |
|
Date |
User |
Action |
Args |
2017-02-04 05:18:54 | yan12125 | set | recipients:
+ yan12125 |
2017-02-04 05:18:54 | yan12125 | set | messageid: <1486185534.28.0.954859942515.issue29440@psf.upfronthosting.co.za> |
2017-02-04 05:18:54 | yan12125 | link | issue29440 messages |
2017-02-04 05:18:53 | yan12125 | create | |
|