Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to set up my Fedora Core 4 box to run an XSUB I developed that serves as an SQL interface to the mdbtools libraries. This works on my old FC2 machine fine, but when I try to install it here the "perl Makefile.PL" complains about not being able to find the libraries needed. Makefile.PL looks like:
use 5.008003; use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( NAME => 'MdbSQL', VERSION_FROM => 'lib/MdbSQL.pm', # finds $VERSION PREREQ_PM => {}, # e.g., Module::Name => 1.1 ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'lib/MdbSQL.pm', # retrieve abstract from mod +ule AUTHOR => 'Jon Dixon <dixonj@localdomain>') : ()), # LIBS => ['-L/usr/local/lib ', `pkg-config --libs gli +b-2.0 `, '-L/usr/lib '], # e.g., '-lm' LIBS => ['-L/usr/local/lib ', '-lmdb -lmdbsql ', `pkg +-config --libs glib-2.0 `, '-L/usr/lib '], # e.g., '-lm' DEFINE => '', # e.g., '-DHAVE_SOMETHING' INC => '-I. -I/usr/local/include ' . `pkg-config --c +flags glib-2.0 `, # e.g., '-I. -I/usr/include/other' # Un-comment this if you add C files to link with later: # OBJECT => '$(O_FILES)', # link all the C files too ); if (eval {require ExtUtils::Constant; 1}) { # If you edit these definitions to change the constants used by this + module, # you will need to use the generated const-c.inc and const-xs.inc # files to replace their "fallback" counterparts before distributing + your # changes. my @names = (qw()); ExtUtils::Constant::WriteConstants( NAME => 'MdbSQL', NAMES => \@names, DEFAULT_TYPE => 'IV', C_FILE => 'const-c.inc', XS_FILE => 'const-xs.inc', ); } else { use File::Copy; use File::Spec; foreach my $file ('const-c.inc', 'const-xs.inc') { my $fallback = File::Spec->catfile('fallback', $file); copy ($fallback, $file) or die "Can't copy $fallback to $file: $!" +; } }
Running this gives:
Note (probably harmless): No library found for -lmdb Note (probably harmless): No library found for -lmdbsql Writing Makefile for MdbSQL
The libmdb.so and libmdbsql.so libraries are installed in /usr/local/lib, with header files in /usr/local/include. If I go in and try to manually add the -lmdb and -lmdbsql on EXTRALIBS and LDLOADLIBS in the Makefile, the "make" process works fine but I get an error in "make test" as soon as it tries to load a function from the libmdbsql.so.

Anyone have suggestions for what is needed to allow Makefile.PL to be able to find the proper libraries?

Thanks, Jon

Replies are listed 'Best First'.
Re: Library path for XSUB
by PodMaster (Abbot) on Oct 05, 2005 at 00:19 UTC
    Anyone have suggestions for what is needed to allow Makefile.PL to be able to find the proper libraries?
    See the ExtUtils::MakeMaker documentation, in particular the entry for LIBS, and adjust your Makefile.PL accordingly.

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.