[fdo-internals] RE: PostgreSQL libpq.a library for Linux

Trevor Wekel trevor_wekel at otxsystems.com
Sat Sep 11 01:42:18 EDT 2010


Ok.  I can now create a build of the PostGIS Provider on Linux which contains no "ldd -r" undefined symbol errors.  The second fix was easy.  The dependency on the Expression Engine was not present in Providers/PostGIS/Src/Makefile.am.  And Linux is so lenient that it doesn't even complain about the missing symbols until you try to *use* the library.  Geez.

I would like to submit the build fixes to the FDO 3.5.0 branch and trunk.  Please see http://trac.osgeo.org/fdo/ticket/694 for full details on the fixes required.


Regards,
Trevor


-----Original Message-----
From: fdo-internals-bounces at lists.osgeo.org [mailto:fdo-internals-bounces at lists.osgeo.org] On Behalf Of Trevor Wekel
Sent: September 10, 2010 6:34 PM
To: FDO Internals Mail List
Subject: [fdo-internals] RE: PostgreSQL libpq.a library for Linux

Thought I would post a follow up on this one.  I downloaded source for PostgreSQL 8.4.2 and built it with the default configure settings.  Libpq.a comes out at around 164k and libecpg.a comes out at 91k.  I tried building with the new static libraries and the undefined symbol errors have gone away.  Look as though we have "odd" static libraries in Subversion.

However, when I build the final shared library for libPostGISProvider-3.5.0.so I get the following undefined symbols:

undefined symbol: _ZN12FdoFunctionZ6CreateEv    (./libPostGISProvider-3.5.0.so)
undefined symbol: _ZN12FdoFunctionX6CreateEv    (./libPostGISProvider-3.5.0.so)
undefined symbol: _ZN12FdoFunctionY6CreateEv    (./libPostGISProvider-3.5.0.so)
undefined symbol: _ZN12FdoFunctionM6CreateEv    (./libPostGISProvider-3.5.0.so)

Using c++filt (a name demangler on linux), the following functions are flagged.  Any ideas?

FdoFunctionZ::Create()
FdoFunctionX::Create()
FdoFunctionY::Create()
FdoFunctionM::Create()
FdoExpressionEngine::GetStandardFunctions()


Other than that, the following providers are showing no undefined symbols in Linux (whew!)

libFdoMySQL-3.5.0.so
libFdoODBC-3.5.0.so
libFdoOws-3.5.0.so
libFdoPostgreSQL-3.5.0.so
libGRFPProvider-3.5.0.so
libKingOracleProvider-3.5.0.so
libOGRProvider-3.5.0.so
libPostGISProvider-3.5.0.so
libSDFProvider-3.5.0.so
libSHPProvider-3.5.0.so
libSQLiteProvider-3.5.0.so
libWFSProvider-3.5.0.so
libWMSProvider-3.5.0.so

Regards,
Trevor


-----Original Message-----
From: fdo-internals-bounces at lists.osgeo.org [mailto:fdo-internals-bounces at lists.osgeo.org] On Behalf Of Trevor Wekel
Sent: September 10, 2010 11:08 AM
To: FDO Internals Mail List
Subject: [fdo-internals] PostgreSQL libpq.a library for Linux

Hello,

Does anyone recall how Thirdparty/pgsql/lib/libpq.a was generated?  I am seeing a number of undefined symbol messages when running "ldd -r libPostGISProvider.so" with the FDO 3.5.0 RC1 build.

undefined symbol: PQclear       (./libPostGISProvider.so)
undefined symbol: PQresultStatus        (./libPostGISProvider.so)
undefined symbol: PQgetvalue    (./libPostGISProvider.so)
undefined symbol: PQclear       (./libPostGISProvider.so)
undefined symbol: PQresultErrorMessage  (./libPostGISProvider.so)
undefined symbol: PQexec        (./libPostGISProvider.so)

So I suspect there is something funky going on with libpq.a.  As a side note, the current version of libpq.a is smaller than its predecessor and much smaller than the "standard" libpq.a installed on CentOS 5.4 through "yum install postgresql-devel"

http://trac.osgeo.org/fdo/browser/branches/3.5/Thirdparty/pgsql/lib/libpq.a?rev=5309  (96 kbytes)
http://trac.osgeo.org/fdo/browser/trunk/Thirdparty/pgsql/lib/libpq.a?rev=3499 (137 kbytes) /usr/lib/libpq.a from "yum install postgresql-devel" (755 kbytes)

Regards,
Trevor



More information about the fdo-internals mailing list