djhenderson / pymssql

Automatically exported from code.google.com/p/pymssql
GNU Lesser General Public License v2.1
0 stars 0 forks source link

pymssql.so: undefined symbol: __fread_chk #123

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
>>> import pymssql
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: 
/usr/local/lib/python2.7/site-packages/pymssql-2.0.0b1_dev_20130403-py2.7-linux-
x86_64.egg/pymssql.so: undefined symbol: __fread_chk

Original issue reported on code.google.com by jinyinq...@gmail.com on 6 Jun 2013 at 9:42

GoogleCodeExporter commented 9 years ago
I have resolved the issue.

change FREETDS in setup.py as below

if osp.exists(FREETDS):
        FREETDS = "/usr/local/freetds/"

Original comment by jinyinq...@gmail.com on 8 Jun 2013 at 8:16

GoogleCodeExporter commented 9 years ago
my operation system is suse 10.1 x86_64
so i recompile the freetsd

export CFLAGS='-fPIC'
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib  
--enable-static

Original comment by jinyinq...@gmail.com on 8 Jun 2013 at 8:20

GoogleCodeExporter commented 9 years ago

Original comment by msabr...@gmail.com on 7 Aug 2013 at 6:14

GoogleCodeExporter commented 9 years ago
Thanks for the issue report!

By any chance, have you tried to reproduce this on a newer Linux distro? 

Suse 10.1 is fairly old. 

Original comment by msabr...@gmail.com on 16 Aug 2013 at 12:00

GoogleCodeExporter commented 9 years ago
I just added a commit that fixes this issue for me on SUSE 10.1:

https://code.google.com/p/pymssql/source/detail?r=196557e92d5c9db1d26621236a94dc
6481babae1

changeset:   355:196557e92d5c
tag:         tip
user:        Marc Abramowitz <marc@marc-abramowitz.com>
date:        Mon Sep 02 09:31:05 2013 -0700
files:       setup.py
description:
 issue 71  ('"undefined symbol: __vasprintf_chk" on some CentOS, RedHat because
of precompiled FreeTDS Linux library')

setup.py: Don't try to use bundled FreeTDS if the system's libc doesn't have a
__vasprintf_chk symbol

If the system's libc doesn't have a __vasprintf_chk symbol, then linking with 
the bundled FreeTDS library is destined to fail, so in this case we don't try 
to link with the bundled FreeTDS. The user is responsible for installing an 
appropriate FreeTDS library.

Here's what I get now with this change:

marca@linux-u176:~/dev/hg-repos/pymssql> python setup.py build_ext -i setup.py: platform.system() => 'Linux' setup.py: platform.architecture() => ('64bit', 'ELF') setup.py: platform.linux_distribution() => ('SUSE LINUX ', '10.1', 'X86-64') setup.py: platform.libc_ver() => ('glibc', '2.3') setup.py: libc_has_vasprintf_chk = False setup.py: libc doesn't have __vasprintf_chk - not going to use bundled FreeTDS setup.py: Not using bundled FreeTDS setup.py: include_dirs = ['/usr/local/include'] setup.py: library_dirs = ['/usr/local/lib'] running build_ext cythoning _mssql.pyx to _mssql.c building '_mssql' extension creating build creating build/temp.linux-x86_64-2.7 gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/usr/local/include/python2.7 -c _mssql.c -o build/temp.linux-x86_64-2.7/_mssql.o -DMSDBLIB _mssql.c:314:22: error: sqlfront.h: No such file or directory ...


At this point, one could install FreeTDS and then pymssql will build.

Can other folks verify?

Original comment by msabr...@gmail.com on 2 Sep 2013 at 6:04