Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.91k stars 542 forks source link

Perl 5.10 make problems - math.h references #9496

Closed p5pRT closed 11 years ago

p5pRT commented 16 years ago

Migrated from rt.perl.org#59332 (status was 'resolved')

Searchable as RT59332$

p5pRT commented 16 years ago

From nreed@uci.edu

To whom it may concern\,   After running the Configure step and verifying that the config.sh file had the appropriate information for the make step\, I ran the make step. I am getting the following error​:

************ . . . `sh cflags "optimize='-O'" pp_sort.o` pp_sort.c   CCCMD = gcc -DPERL_CORE -c -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/BerkeleyDB.4.2/include -I/usr/local/mysql/include -I/usr/local/ssl/include/openssl -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -O -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels `sh cflags "optimize='-O'" opmini.o` -DPERL_EXTERNAL_GLOB opmini.c   CCCMD = gcc -DPERL_CORE -c -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/BerkeleyDB.4.2/include -I/usr/local/mysql/include -I/usr/local/ssl/include/openssl -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -O -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels

gcc -L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib -o miniperl \   `echo gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o | sed 's/ op.o / /'` \   miniperlmain.o opmini.o Undefined first referenced   symbol in file cos pp.o exp pp.o log pp.o pow pp.o sin pp.o ceil pp.o fmod pp.o sqrt pp.o atan2 pp.o floor pp.o ld​: fatal​: Symbol referencing errors. No output written to miniperl collect2​: ld returned 1 exit status *** Error code 1 make​: Fatal error​: Command failed for target `miniperl' # ****

I have checked that /usr/include does have the math.h include file and that the /usr/lib directory has appropriate lib files. I see that config.h\, perl.h\, and uconfig.h all manipulate the referenced functions based upon some IFDEF's and UNDEF's.

Here is the output of ./myconfig.sh​:

**** # ./myconfig Summary of my perl5 (revision 5 version 10 subversion 0) configuration​:   Platform​:   osname=solaris\, osvers=2.10\, archname=sun4-solaris   uname='sunos jordi 5.10 generic_127111-09 sun4v sparc sunw\,sparc-enterprise-t5120 solaris '   config_args='-Dprefix=/usr/local/perl5 -Dcc=gcc -Dlocincpth=/usr/local/include /usr/local/mysql/include /usr/local/ssl/include/openssl'   hint=recommended\, useposix=true\, d_sigaction=define   useithreads=undef\, usemultiplicity=undef   useperlio=define\, d_sfio=undef\, uselargefiles=define\, usesocks=undef   use64bitint=undef\, use64bitall=undef\, uselongdouble=undef   usemymalloc=n\, bincompat5005=undef   Compiler​:   cc='gcc'\, ccflags ='-fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/mysql/include -I/usr/local/ssl/include/openssl -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV'\,   optimize='-O'\,   cppflags='-fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/mysql/include -I/usr/local/ssl/include/openssl'   ccversion=''\, gccversion='3.4.6'\, gccosandvers='solaris2.10'   intsize=4\, longsize=4\, ptrsize=4\, doublesize=8\, byteorder=4321   d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16   ivtype='long'\, ivsize=4\, nvtype='double'\, nvsize=8\, Off_t='off_t'\, lseeksize=8   alignbytes=8\, prototype=define   Linker and Libraries​:   ld='gcc'\, ldflags ='-L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib '   libpth=/usr/local/lib /usr/ccs/lib   libs=-lgdbm   perllibs=   libc=/lib/libc.so\, so=so\, useshrplib=false\, libperl=libperl.a   gnulibc_version=''   Dynamic Linking​:   dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags=' '   cccdlflags='-fPIC'\, lddlflags='-G -L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib'

#

******************

There must be some missing library reference or an ordering issue with the libraries and define statements\, but there is nothing that stands out.

Please advise.

Nathan K. Reed Programmer/Analyst Supervisor of Records group University of California\, Irvine Office of Admissions and Relations with Schools (949) 824-9631

p5pRT commented 15 years ago

From @tux

On Thu\, 25 Sep 2008 10​:02​:51 -0700\, Nathan Reed (via RT) \perlbug\-followup@​perl\.org wrote​:

To whom it may concern\, After running the Configure step and verifying that the config.sh file had the appropriate information for the make step\, I ran the make step. I am getting the following error​: : gcc -L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib -o miniperl \ `echo gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o | sed 's/ op.o / /'` \ miniperlmain.o opmini.o Undefined first referenced symbol in file cos pp.o exp pp.o log pp.o pow pp.o sin pp.o ceil pp.o fmod pp.o sqrt pp.o atan2 pp.o floor pp.o

You're missing the math library\, not the include file. How did it not find libm.a/libm.so/libm.sl?

ld​: fatal​: Symbol referencing errors. No output written to miniperl collect2​: ld returned 1 exit status *** Error code 1 make​: Fatal error​: Command failed for target `miniperl' : # ./myconfig Summary of my perl5 (revision 5 version 10 subversion 0) configuration​: Platform​: osname=solaris\, osvers=2.10\, archname=sun4-solaris

We know AIX is known to `hide' libm.a or not ship a version that matches the architecture\, but I have not seen that on Solaris before

 uname='sunos jordi 5\.10 generic\_127111\-09 sun4v sparc 

sunw\,sparc-enterprise-t5120 solaris ' config_args='-Dprefix=/usr/local/perl5 -Dcc=gcc -Dlocincpth=/usr/local/include /usr/local/mysql/include /usr/local/ssl/include/openssl'

So\, you're building for a 32bit perl\, and you have chosen to answer the questions\, instead of choosing the default answers (I see no -de option)

 hint=recommended\, useposix=true\, d\_sigaction=define
 useithreads=undef\, usemultiplicity=undef
 useperlio=define\, d\_sfio=undef\, uselargefiles=define\, usesocks=undef
 use64bitint=undef\, use64bitall=undef\, uselongdouble=undef
 usemymalloc=n\, bincompat5005=undef

Compiler​: cc='gcc'\, ccflags ='-fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/mysql/include -I/usr/local/ssl/include/openssl -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV -DPERL_USE_SAFE_PUTENV'\, optimize='-O'\, cppflags='-fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/mysql/include -I/usr/local/ssl/include/openssl' ccversion=''\, gccversion='3.4.6'\, gccosandvers='solaris2.10' intsize=4\, longsize=4\, ptrsize=4\, doublesize=8\, byteorder=4321 d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16 ivtype='long'\, ivsize=4\, nvtype='double'\, nvsize=8\, Off_t='off_t'\, lseeksize=8 alignbytes=8\, prototype=define Linker and Libraries​: ld='gcc'\, ldflags ='-L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib ' libpth=/usr/local/lib /usr/ccs/lib libs=-lgdbm   ^^^ No -lm here

 perllibs=

And this line is frightening empty

Compare to what I have on HP-UX

  Linker and Libraries​:   ld='/usr/bin/ld'\, ldflags ='-L/pro/local/lib +DD64 -L/usr/lib/hpux64'   libpth=/pro/local/lib /usr/lib/hpux64 /lib /usr/lib /usr/ccs/lib /usr/local/lib   libs=-lcl -lpthread -lnsl -lnm -ldb -ldl -ldld -lm -lsec -lc   perllibs=-lcl -lpthread -lnsl -lnm -ldl -ldld -lm -lsec -lc   libc=/usr/lib/hpux64/libc.so\, so=so\, useshrplib=false\, libperl=libperl.a

So my guess is that you have entered '/usr/local/lib /usr/ccs/lib' where Configure came with a much longer list of path elements\, and doing it that way\, you've removed the default list.

 libc=/lib/libc\.so\, so=so\, useshrplib=false\, libperl=libperl\.a
 gnulibc\_version=''

Dynamic Linking​: dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags=' ' cccdlflags='-fPIC'\, lddlflags='-G -L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib' ​: There must be some missing library reference or an ordering issue with the libraries and define statements\, but there is nothing that stands out.

-- H.Merijn Brand Amsterdam Perl Mongers http​://amsterdam.pm.org/ using & porting perl 5.6.2\, 5.8.x\, 5.10.x\, 5.11.x on HP-UX 10.20\, 11.00\, 11.11\, 11.23\, and 11.31\, SuSE 10.1\, 10.2\, and 10.3\, AIX 5.2\, and Cygwin. http​://mirrors.develooper.com/hpux/ http​://www.test-smoke.org/ http​://qa.perl.org http​://www.goldmark.org/jeff/stupid-disclaimers/

p5pRT commented 15 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 15 years ago

From @doughera88

On Fri\, 26 Sep 2008\, H.Merijn Brand wrote​:

On Thu\, 25 Sep 2008 10​:02​:51 -0700\, Nathan Reed (via RT) \perlbug\-followup@​perl\.org wrote​:

To whom it may concern\, After running the Configure step and verifying that the config.sh file had the appropriate information for the make step\, I ran the make step. I am getting the following error​: : gcc -L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib -o miniperl \ `echo gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o | sed 's/ op.o / /'` \ miniperlmain.o opmini.o Undefined first referenced symbol in file cos pp.o exp pp.o log pp.o pow pp.o sin pp.o ceil pp.o fmod pp.o sqrt pp.o atan2 pp.o floor pp.o

You're missing the math library\, not the include file. How did it not find libm.a/libm.so/libm.sl?

So\, you're building for a 32bit perl\, and you have chosen to answer the questions\, instead of choosing the default answers (I see no -de option)

Yes\, that's what happened. It's a reasonable thing to do\, but for some reason it's also a common thing for users to delete the list of directories to search for libraries.

 libpth=/usr/local/lib /usr/ccs/lib

So my guess is that you have entered '/usr/local/lib /usr/ccs/lib' where Configure came with a much longer list of path elements\, and doing it that way\, you've removed the default list.

Yes. That's the culprit. It's missing /usr/lib at the very least.

To fix this\, you need to start at the very beginning all over again. See the section

  =item Missing functions and Undefined symbols

in the INSTALL file for more information.

--   Andy Dougherty doughera@​lafayette.edu

p5pRT commented 11 years ago

From @jkeenan

On Fri Sep 26 05​:22​:53 2008\, doughera wrote​:

On Fri\, 26 Sep 2008\, H.Merijn Brand wrote​:

On Thu\, 25 Sep 2008 10​:02​:51 -0700\, Nathan Reed (via RT) \perlbug\-followup@​perl\.org wrote​:

To whom it may concern\, After running the Configure step and verifying that the config.sh file had the appropriate information for the make step\, I ran the make step. I am getting the following error​: : gcc -L/usr/local/lib -L/usr/local/BerkeleyDB.4.2/lib -o miniperl \ `echo gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o | sed 's/ op.o / /'` \ miniperlmain.o opmini.o Undefined first referenced symbol in file cos pp.o exp pp.o log pp.o pow pp.o sin pp.o ceil pp.o fmod pp.o sqrt pp.o atan2 pp.o floor pp.o

You're missing the math library\, not the include file. How did it not find libm.a/libm.so/libm.sl?

So\, you're building for a 32bit perl\, and you have chosen to answer the questions\, instead of choosing the default answers (I see no -de option)

Yes\, that's what happened. It's a reasonable thing to do\, but for some reason it's also a common thing for users to delete the list of directories to search for libraries.

 libpth=/usr/local/lib /usr/ccs/lib

So my guess is that you have entered '/usr/local/lib /usr/ccs/lib' where Configure came with a much longer list of path elements\, and doing it that way\, you've removed the default list.

Yes. That's the culprit. It's missing /usr/lib at the very least.

To fix this\, you need to start at the very beginning all over again. See the section

=item Missing functions and Undefined symbols

in the INSTALL file for more information.

H.Merijn Brand and Andy Dougherty appear to have given reasonable responses to the original poster's problem\, which appears to have been at least partially self-induced.

I am therefore marking this ticket resolved.

Thank you very much. Jim Keenan

p5pRT commented 11 years ago

@jkeenan - Status changed from 'open' to 'resolved'