zeljko wrote 30 lines
On Tuesday 25 of September 2012 20:42:18 Leonardo M. Ram? wrote:
> On 2012-09-25 20:35:43 +0200, Bernd wrote:
> > 2012/9/25 Leonardo M. Ram? :
> > > Do you know a way to know where's the loader looking for libraries?,
> > > from command line.
> >
> > ldconfig --print-cache
> >
> > Your library should appear there if installed correctly
> >
> > --
>
> Here's the result of ldconfig:
>
> /sbin/ldconfig --print-cache|grep libpq
> libpqwalreceiver.so (libc6) => /usr/local/pgsql/lib/libpqwalreceiver.so
> libpq.so.5 (libc6) => /usr/local/pgsql/lib/libpq.so.5
> libpq.so (libc6) => /usr/local/pgsql/lib/libpq.so
>
> It seems to be installed correctly.
If you compiled it by yourself then something goes wrong probably. Maybe
you've compiled 64bit lib and tried to load it with 32bit app ?
You can easy test that. Create new application, include dynlibs and try to
load that library in some event (eg. ButtonOnClick). According to your posts
ld.conf contains valid entries and libpq.so is in the path, so something else
is wrong .
zeljko
I've made this simple program to test what's happening while loading libpq.so.
Important: I must point out that I'm running FPC 2.7.1 on a Linux PowerPC 64 bits machine. And it works ok on an x86_64 Ubuntu PC.
The result I'm getting when calling "RaiseLastOSError" is this:
An unhandled exception occurred at $000000001001582C: EOSError: An operating system call failed.
$000000001001582C
Here's the program:
program test;
{$mode objfpc}{$H+}
uses
sysutils,
dynlibs;
const
cLibrary = '/usr/local/pgsql/lib/libpq.so';
var
lHandle: TLibHandle;
begin
if not FileExists(cLibrary) then
begin
writeln('Library ' + cLibrary + ' does not exists.');
halt;
end;
lHandle := LoadLibrary(cLibrary);
if lHandle = 0 then
begin
writeln('Library not loaded');
RaiseLastOSError;
end;
end.