[freetds] libiconv-prefix seems broken

Wood, David David.Wood at deshaw.com
Thu Jan 8 20:55:45 EST 2009


Hello,

I'm compiling freetds-0.82.1.dev.20081111 on Solaris 10 x86.  I had been
successfully using "--with-libiconv-prefix" with v0.64; however, with
v0.82 configure failed to detect my installation of GNU libiconv.  I
eventually realised that freetds-0.82.1.dev.20081111 doesn't ship with
config.rpath.  I generated config.rpath myself and made some progress
until:

<<
/tmp/freetds/src/apps/fisql > gmake
/bin/bash ../../../libtool --tag=CC --mode=link gcc -D_REENTRANT
-pthreads -O3 -g -Wdeclaration-after-statement  -O3 -g
-L/usr/local/unixodbc-2.2.14/lib -o fisql  fisql.o terminal.o edit.o
handlers.o interrupt.o ../../dblib/libsybdb.la
../../replacements/libreplacements.la -lnsl -lsocket
gcc -D_REENTRANT -pthreads -O3 -g -Wdeclaration-after-statement -O3 -g
-o .libs/fisql fisql.o terminal.o edit.o handlers.o interrupt.o
-L/usr/local/unixodbc-2.2.14/lib ../../dblib/.libs/libsybdb.so
../../replacements/.libs/libreplacements.a -lnsl -lsocket
-R/usr/local/freetds-0.82.1.dev.20081111/lib
Undefined                       first referenced
 symbol                             in file
libiconv_close                      ../../dblib/.libs/libsybdb.so
libiconv_open                       ../../dblib/.libs/libsybdb.so
libiconv                            ../../dblib/.libs/libsybdb.so
ld: fatal: Symbol referencing errors. No output written to .libs/fisql
collect2: ld returned 1 exit status
gmake: *** [fisql] Error 1
>>

I used this fix for fisql:

<<
--- src/apps/fisql/Makefile.am  7 Jan 2009 01:57:46 -0000       1.1.1.1
+++ src/apps/fisql/Makefile.am  9 Jan 2009 00:37:34 -0000
@@ -6,6 +6,6 @@
 else
 bin_PROGRAMS   = fisql

-fisql_LDADD    = ../../dblib/libsybdb.la
../../replacements/libreplacements.la $(NETWORK_LIBS) $(READLINE_LIBS)
+fisql_LDADD    = ../../dblib/libsybdb.la
../../replacements/libreplacements.la $(NETWORK_LIBS) $(LIBICONV)
$(READLINE_LIBS)
 fisql_SOURCES  = fisql.c terminal.c terminal.h edit.c edit.h handlers.c
handlers.h interrupt.c interrupt.h
 endif
>>

I again made more progress until freebcp:

<<
gcc -D_REENTRANT -pthreads -O3 -g -Wdeclaration-after-statement -O3 -g
-o .libs/freebcp freebcp.o -L/usr/local/unixodbc-2.2.14/lib
../dblib/.libs/libsybdb.so -lnsl -lsocket
-R/usr/local/freetds-0.82.1.dev.20081111/lib
Undefined                       first referenced
 symbol                             in file
libiconv_close                      ../dblib/.libs/libsybdb.so
libiconv_open                       ../dblib/.libs/libsybdb.so
libiconv                            ../dblib/.libs/libsybdb.so
ld: fatal: Symbol referencing errors. No output written to .libs/freebcp
collect2: ld returned 1 exit status
>>

>From freetds/src/apps/Makefile:

<<
freebcp_LDADD = ../dblib/libsybdb.la $(NETWORK_LIBS)
freebcp_SOURCES = freebcp.c freebcp.h
tsql_LDADD = ../tds/libtds.la \
                  ../replacements/libreplacements.la \
                  $(NETWORK_LIBS) $(LIBICONV) $(FREETDS_LIBGCC)
$(READLINE_LIBS)

>>

Notice tsql includes LIBICONV whereas freebcp does not.  This problem
extends to bsqldb, defncopy, and many others.  I decided to stop mucking
with individual Makefiles and I now forcibly link GNU iconv via LDFLAGS.
Perhaps a better / more generic fix would be appropriate?

David


More information about the FreeTDS mailing list