[New-bugs-announce] [issue29440] _dbm requires -lgdbm if gdbm is built as static libraries

Chi Hsuan Yen report at bugs.python.org
Sat Feb 4 00:18:54 EST 2017


New submission from Chi Hsuan Yen:

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 at 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

----------
components: Build
files: gdbm.patch
keywords: patch
messages: 286907
nosy: Chi Hsuan Yen
priority: normal
severity: normal
status: open
title: _dbm requires -lgdbm if gdbm is built as static libraries
type: compile error
versions: Python 3.6, Python 3.7
Added file: http://bugs.python.org/file46507/gdbm.patch

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue29440>
_______________________________________


More information about the New-bugs-announce mailing list