[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Why is malloc being defined as rpl_malloc ??
From: |
Dr. David Kirkby |
Subject: |
Re: Why is malloc being defined as rpl_malloc ?? |
Date: |
Mon, 05 May 2003 15:49:00 +0100 |
Jim Meyering wrote:
>
> "Dr. David Kirkby" <address@hidden> wrote:
> ...
> > I'm now trying to run the script on a 64-bit Dec Alpha (Digital
> > Personal Workstation 600a to be precise) running HP/Compaq's Tru64
> > operating system. The build process fails with:
> >
> > ld:
> > Unresolved:
> > rpl_malloc
>
> That happens when you use AC_FUNC_MALLOC (and it finds it needs to use
> rpl_malloc), and a later configure-time link-test (or run-test) uses
> malloc without preceding that use with `#undef malloc'.
>
> Please let us know which macro contains the offending use of malloc.
It could be the macro gsl.m4, which checks for the GNU scientific
library (gsl) and is distributed with gsl. I've put a copy of it
below. That does call malloc directly. Please note, I did *NOT* write
the macro.
For my case, it was easiest to remove the AC_FUNC_MALLOC macro from
configure.ac.
David Kirkby.
% cat gsl.m4
# Configure path for the GNU Scientific Library
# Christopher R. Gabriel <address@hidden>, April 2000
AC_DEFUN(AM_PATH_GSL,
[
AC_ARG_WITH(gsl-prefix,[ --with-gsl-prefix=PFX Prefix where GSL is
installed (optional)],
gsl_prefix="$withval", gsl_prefix="")
AC_ARG_WITH(gsl-exec-prefix,[ --with-gsl-exec-prefix=PFX Exec prefix
where GSL is installed (optional)],
gsl_exec_prefix="$withval", gsl_exec_prefix="")
AC_ARG_ENABLE(gsltest, [ --disable-gsltest Do not try to
compile and run a test GSL program],
, enable_gsltest=yes)
if test "x${GSL_CONFIG+set}" != xset ; then
if test "x$gsl_prefix" != x ; then
GSL_CONFIG="$gsl_prefix/bin/gsl-config"
fi
if test "x$gsl_exec_prefix" != x ; then
GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config"
fi
fi
AC_PATH_PROG(GSL_CONFIG, gsl-config, no)
min_gsl_version=ifelse([$1], ,0.2.5,$1)
AC_MSG_CHECKING(for GSL - version >= $min_gsl_version)
no_gsl=""
if test "$GSL_CONFIG" = "no" ; then
no_gsl=yes
else
GSL_CFLAGS=`$GSL_CONFIG --cflags`
GSL_LIBS=`$GSL_CONFIG --libs`
gsl_major_version=`$GSL_CONFIG --version | \
sed 's/^\([[0-9]]*\).*/\1/'`
if test "x${gsl_major_version}" = "x" ; then
gsl_major_version=0
fi
gsl_minor_version=`$GSL_CONFIG --version | \
sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'`
if test "x${gsl_minor_version}" = "x" ; then
gsl_minor_version=0
fi
gsl_micro_version=`$GSL_CONFIG --version | \
sed
's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'`
if test "x${gsl_micro_version}" = "x" ; then
gsl_micro_version=0
fi
if test "x$enable_gsltest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GSL_CFLAGS"
LIBS="$LIBS $GSL_LIBS"
rm -f conf.gsltest
AC_TRY_RUN([
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* my_strdup (const char *str);
char*
my_strdup (const char *str)
{
char *new_str;
if (str)
{
new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
strcpy (new_str, str);
}
else
new_str = NULL;
return new_str;
}
int main (void)
{
int major = 0, minor = 0, micro = 0;
int n;
char *tmp_version;
system ("touch conf.gsltest");
/* HP/UX 9 (address@hidden) writes to sscanf strings */
tmp_version = my_strdup("$min_gsl_version");
n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ;
if (n != 2 && n != 3) {
printf("%s, bad version string\n", "$min_gsl_version");
exit(1);
}
if (($gsl_major_version > major) ||
(($gsl_major_version == major) && ($gsl_minor_version > minor))
||
(($gsl_major_version == major) && ($gsl_minor_version == minor)
&& ($gsl_micro_version >= micro)))
{
exit(0);
}
else
{
printf("\n*** 'gsl-config --version' returned %d.%d.%d, but the
minimum version\n", $gsl_major_version, $gsl_minor_version,
$gsl_micro_version);
printf("*** of GSL required is %d.%d.%d. If gsl-config is
correct, then it is\n", major, minor, micro);
printf("*** best to upgrade to the required version.\n");
printf("*** If gsl-config was wrong, set the environment
variable GSL_CONFIG\n");
printf("*** to point to the correct copy of gsl-config, and
remove the file\n");
printf("*** config.cache before re-running configure\n");
exit(1);
}
}
],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_gsl" = x ; then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$GSL_CONFIG" = "no" ; then
echo "*** The gsl-config script installed by GSL could not be
found"
echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin
is in"
echo "*** your path, or set the GSL_CONFIG environment variable
to the"
echo "*** full path to gsl-config."
else
if test -f conf.gsltest ; then
:
else
echo "*** Could not run GSL test program, checking why..."
CFLAGS="$CFLAGS $GSL_CFLAGS"
LIBS="$LIBS $GSL_LIBS"
AC_TRY_LINK([
#include <stdio.h>
], [ return 0; ],
[ echo "*** The test program compiled, but did not run. This
usually means"
echo "*** that the run-time linker is not finding GSL or
finding the wrong"
echo "*** version of GSL. If it is not finding GSL, you'll
need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit
/etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you
have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best
to remove it, although"
echo "*** you may also be able to get things to work by
modifying LD_LIBRARY_PATH"],
[ echo "*** The test program failed to compile or link. See
the file config.log for the"
echo "*** exact error that occured. This usually means GSL
was incorrectly installed"
echo "*** or that you have moved GSL since it was installed.
In the latter case, you"
echo "*** may want to edit the gsl-config script:
$GSL_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
# GSL_CFLAGS=""
# GSL_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(GSL_CFLAGS)
AC_SUBST(GSL_LIBS)
rm -f conf.gsltest
])
--
Dr. David Kirkby,
Senior Research Fellow,
Department of Medical Physics,
University College London,
11-20 Capper St, London, WC1E 6JA.
Tel: 020 7679 6408 Fax: 020 7679 6269
Internal telephone: ext 46408
e-mail address@hidden
- Why is malloc being defined as rpl_malloc ??, Dr. David Kirkby, 2003/05/03
- Re: Why is malloc being defined as rpl_malloc ??, Paul Eggert, 2003/05/04
- Re: Why is malloc being defined as rpl_malloc ??, Thomas E. Dickey, 2003/05/04
- Re: Why is malloc being defined as rpl_malloc ??, Dr. David Kirkby, 2003/05/04
- Re: Why is malloc being defined as rpl_malloc ??, Paul Eggert, 2003/05/04
- Re: Why is malloc being defined as rpl_malloc ??, Dr. David Kirkby, 2003/05/05
- Re: Why is malloc being defined as rpl_malloc ??, Paul Eggert, 2003/05/05
- Re: Why is malloc being defined as rpl_malloc ??, Dr. David Kirkby, 2003/05/05
Re: Why is malloc being defined as rpl_malloc ??, Jim Meyering, 2003/05/05
- Re: Why is malloc being defined as rpl_malloc ??,
Dr. David Kirkby <=