Skip to Content.
Sympa Menu

freetds - Re: [freetds] FreeTDS build on AIX - No shared objects (.so) generated?

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Worman, Tyler" <tworman AT med.umich.edu>
  • To: 'FreeTDS Development Group' <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] FreeTDS build on AIX - No shared objects (.so) generated?
  • Date: Tue, 22 Sep 2015 16:54:18 +0000

To update this, the build worked but the local libiconv provided with AIX
didn't provide everything needed. It was giving an invalid login but the
error message was just "L". The TDSDUMP pointed me to libiconv not supporting
some of the translations needed for the connection.

Here is what tipped me off:
log.c:167:Starting log file for FreeTDS 0.95.19
on 2015-09-22 09:54:03 with debug flags 0x4fff.
iconv.c:328:tds_iconv_open(110023490, ISO8859-1)
iconv.c:187:local name for ISO-8859-1 is ISO-8859-1
iconv.c:187:local name for UTF-8 is UTF-8
iconv.c:187:local name for UCS-2LE is (null)
iconv.c:187:local name for UCS-2BE is UNICODEBIG
iconv.c:346:setting up conversions for client charset "ISO8859-1"
iconv.c:348:preparing iconv for "ISO8859-1" <-> "UCS-2LE" conversion
iconv.c:455:Charset 2 not supported by iconv, using "ISO-8859-1" instead
iconv.c:395:preparing iconv for "ISO-8859-1" <-> "UCS-2LE" conversion
iconv.c:400:tds_iconv_open: done

The process became build UnixODBC, gnu Libiconv, FreeTDS.

UnixODBC 64-bit:
export OBJECT_MODE=64
export PATH=$PATH:/usr/ccs/bin
env CC=gcc CFLAGS="-maix64 -I/usr/local/include" AR_FLAGS="-X64 cru"
ARFLAGS="-X64 cru" ./configure --prefix=/home/tworman/local64
make
make install

This installs, but doesn't copy the .so's. They do build though.
find /home/tworman/unixODBC-2.3.4 -path '*/.*' | grep "\.so*" > sharedfiles
cp $(<sharedfiles) /home/tworman/local64/lib/

In the new lib dir...
ls *.so.2 | xargs -I {} bash -c 'ln -sf "$1" "${1%%.2}"' - {}

That builds the symlinks for the .so files.

Libiconv 64-bit:
Download gnu libiconv

export OBJECT_MODE=64
env CC=gcc CFLAGS="-maix64 -I/usr/local/include" AR_FLAGS="-X64 cru"
/configure --prefix=/home/tworman/local64/
make
make install

FreeTDS 64-bit:
export OBJECT_MODE=64
export PATH=$PATH:/usr/ccs/bin

env CC=gcc CFLAGS="-maix64 -I/usr/local/include" AR_FLAGS="-X64 cru"
ARFLAGS="-X64 cru" ./configure --with-tdsver=7.0
--with-unixodbc=/home/tworman/local64 --prefix=/home/tworman/local64/
make
make install

find /home/tworman/freetds-0.95.19 -path '*/.*' | grep "\.so*" > sharedfiles
cp $(<sharedfiles) /home/tworman/local64/lib/

In the new lib dir...
ln -sf libct.so.4 libct.so
ln -sf libsybdb.so.5 libsybdb.so
ln -sf libtdsodbc.so.0 libtdsodbc.so
That builds the symlinks for the .so files.


When that is done test tsql and it worked fine. Then osql worked as well!

-----Original Message-----
From: Worman, Tyler
Sent: Tuesday, September 22, 2015 12:18 AM
To: FreeTDS Development Group
Subject: RE: [freetds] FreeTDS build on AIX - No shared objects (.so)
generated?

Following up on how to get the 64 bit version building correctly on AIX. I
don't have autoreconf available to me so I couldn't try that test.

Built 64-bit UnixODBC first. It's located in /home/tworman/local64/ in this
example.

export OBJECT_MODE=64
export PATH=$PATH:/usr/ccs/bin

env CC=gcc CFLAGS="-maix64 -I/usr/local/include" AR_FLAGS="-X64 cru"
ARFLAGS="-X64 cru" ./configure --with-tdsver=8.0
--with-unixodbc=/home/tworman/local64 --prefix=/home/tworman/local64/

make
make install

The .so's still don't copy over on install. So I copied them from the .lib
directory in the install to my lib directory and setup the links manually.

In the new /local64/lib dir, I ran these...
ln -sf libct.so.4 libct.so
ln -sf libsybdb.so.5 libsybdb.so
ln -sf libtdsodbc.so.0 libtdsodbc.so

That builds the symlinks for the .so files and then it seems to work just
fine.

Thanks again.

- Tyler

-----Original Message-----
From: FreeTDS [mailto:freetds-bounces AT lists.ibiblio.org] On Behalf Of
Frediano Ziglio
Sent: Tuesday, September 15, 2015 2:47 PM
To: FreeTDS Development Group
Subject: Re: [freetds] FreeTDS build on AIX - No shared objects (.so)
generated?

2015-09-15 18:39 GMT+01:00 Worman, Tyler <tworman AT med.umich.edu>:
> Hi,
> Trying to build FreeTDS (stable .95.19) on AIX 7100-03-05-1524. The .so
> files don't generate. Browsed online and tried a few suggested fixes for
> similar problems but no luck so far. Generated my own .so files from the .a
> that builds but it doesn't seem to work. Any advice?
>
> Using the following:
> ./configure --with-unixodbc=/usr/local/ --prefix=/home/tworman/local
> --with-tdsver=7.0 make make install
>
> Appears to complete but no .so files are generated in the directory
> /home/tworman/local/lib. I only get .a and .la files.
> I tested tsql that was built. It worked and connected to my MS SQL Server
> instance fine.
>

tsql always works :)
It use static linking so one less issue to solve!
AIX is quite strange when it comes to shared libraries. The static library on
AIX are not such different from static ones.

> I then generated the .so from the .a with gcc -fpic -g -shared -o
> libtdsodbc.so libtdsodbc.a I verified my config using osql. It's fine until
> it gets to the actual connection and invoking isql (Unixodbc 32-bit).

osql do you mean the utility in src/apps, right?

> I tried the exact same .odbc.ini from a Linux box with a build of FreeTDS
> there and it works fine.
>
> The OSQL test:
> ./osql -S TEST -U accthere -P passwordhere
>
> That produces this but no dump.
> [IM004][unixODBC][Driver Manager]Driver's SQLAllocHandle on
> SQL_HANDLE_HENV failed
> [ISQL]ERROR: Could not SQLConnect
> sed: Cannot find or open file /tmp/osql.dump.51511686.
>
> If I do this instead, I still get no dump, and nothing is written to the
> file I specify.
> TDSDUMPCONFIG=stderr TDSDUMP=~/local/bin/temp ./osql -S TEST -U
> usernamhere -P passwordhere
>

could be is not loading the driver so these environment are not used.

> Thanks!
>
> - Tyler
>
>

It would be helpful to see the configure output to understand if something
went wrong.

>
>
>
>
> Semi-unrelated try of 64 bit build (even though UnixODBC is compiled with
> 32bit types).
> export OBJECT_MODE=64
> export CFLAGS=-maix64
> export LIBPATH=/usr/local/lib
> export LD_LIBRARY_PATH=/usr/local/lib
> export AR_FLAGS="-X64 cru"
> export ARFLAGS="-X64 cru"
> ./configure --with-tdsver=7.0 --with-unixodbc=/usr/local
> --prefix=/home/tworman/local
>
> Configure is fine but build of this fails with:
> Making all in .
> CC odbc.lo
> odbc.c: In function '_SQLRowCount':
> odbc.c:4630: warning: visibility attribute not supported in this
> configuration; ignored
> CC connectparams.lo
> connectparams.c:96: error: static declaration of
> 'SQLGetPrivateProfileString' follows non-static declaration
> /usr/local/include/odbcinst.h:210: error: previous declaration of
> 'SQLGetPrivateProfileString' was here

Is quite expected, is finding the declaration but not the function.
Trying to remove the odbcinst.h should make it compile.
Better to have a 64 bit unixODBC !

> make: The error code from the last command is 1.
> Stop.
> make: The error code from the last command is 1.
> Stop.
> make: The error code from the last command is 2.
> Stop.
> make: The error code from the last command is 1.
> Stop.
> make: The error code from the last command is 1.
> Stop.
>
> Not sure if this is really the path I should go down. This seems like
> I just have multiple libraries defining SQLGetPrivateProfileString but
> I only see one in my library path. That is the one from unixodbc at
> /usr/local/include/

If you have autoconf installed in the system you can try with

autoreconf -if

command before configure to see if you can get a working libtool.

Or I can try to make a distribution from a recent system and send to you to
try a new libtool.

Frediano
_______________________________________________
FreeTDS mailing list
FreeTDS AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds
**********************************************************
Electronic Mail is not secure, may not be read every day, and should not be
used for urgent or sensitive issues





Archive powered by MHonArc 2.6.24.

Top of Page