Permalink
Fetching contributors…
Cannot retrieve contributors at this time
executable file 62 lines (51 sloc) 1.67 KB
# -*- cperl -*-
#
# Small frontend for ld that ought to catch common problems
# in the linking stage
#
use strict;
use Data::Dumper;
# fix to get link on Mac OSX to work!
if ($ARGV[0] =~ /MACOSX/)
{
my ($macenv, $macenvval) = split('=',$ARGV[0]);;
$ENV{$macenv} = $macenvval;
shift @ARGV;
}
open(OLDSTDERR, ">&STDERR") || die "Failed to backup STDERR: $!";
open(FILE, ">myld.stderr") || die "Failed to create myld.stderr: $!";
open(STDERR, ">&FILE") || die "Failed to redirect STDERR: $!";
my $retval = system(@ARGV);
open(STDERR, ">&OLDSTDERR");
close(FILE) || die "Failed to close myld.stderr: $!";
my $contents = "";
if (-f "myld.stderr" && !-z _) {
open(FILE, "<myld.stderr") || die "Failed to reopen myld.stderr: $!";
local $/ = undef;
$contents = <FILE>;
die "Failed to read myld.stderr: $!" unless defined($contents);
close(FILE) || die "Failed to close myld.stderr: $!";
if ($contents =~ /cannot find -l(g?z)/i) {
my $missing = $1;
print <<"MSG";
$contents
An error occurred while linking the DBD::mysql driver. The error
message seems to indicate that you don't have a lib$missing.a,
or a lib$missing.so. There are a few ways to resolve this:
1) You may try to remove the -lz or -lgz flag from the libs list
by using the --libs switch for "perl Makefile.PL".
2) On Red Hat Linux and SUSE Linux, install the zlib-devel package
(sometimes called libz-devel)
3) On Debian and Ubuntu, install the zlib1g-dev package
4) On other systems, please contact the mailing list
perl\@lists.mysql.com
For further hints, see INSTALL.html, section Linker flags.
MSG
exit 1;
}
}
if ($retval) {
print STDERR $contents;
exit 1;
}
END { unlink "myld.stderr"; }