FAQ
Hello all.

I am trying to build Perl 5.8.3 with -DPERL_IMPLICIT_SYS and it's
failing. First error is :

`sh cflags "optimize='-O3'" miniperlmain.o` miniperlmain.c
CCCMD = cc -DPERL_CORE -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -I/usr/local/include -DPERL_IMPLICIT_SYS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -Wall
In file included from perl.h:2334,
from miniperlmain.c:27:
iperlsys.h:462: warning: `struct utsname' declared inside parameter list
iperlsys.h:462: warning: its scope is only this definition or declaration, which is probably not what you want.
iperlsys.h:631: warning: `struct utimbuf' declared inside parameter list
iperlsys.h:1132: parse error before `*'
iperlsys.h:1132: parse error before `SOCKET'
iperlsys.h:1133: warning: type defaults to `int' in declaration of `SOCKET'
iperlsys.h:1133: `SOCKET' declared as function returning a function
iperlsys.h:1183: `LPSocket' declared as function returning a function
iperlsys.h:1196: parse error before `LPAccept'
iperlsys.h:1196: warning: no semicolon at end of struct or union
iperlsys.h:1238: parse error before `}'
iperlsys.h:1243: field `perlSockList' has incomplete type
make: *** [miniperlmain.o] Error 1

I have fixed this by adding the following to perl.h :

#ifndef WIN32
#include <stdio.h>
typedef int SOCKET;
#endif

This is a quick hack to get arround the problem and it seems to work (I
remember needing this same fix with Perl 5.6.1 back then).

But then it also errors when linking miniperl :

rm -f libperl.a
/usr/bin/ar rcu libperl.a perl.o gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o hv.o av.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 locale.o pp_pack.o pp_sort.o
cc -L/usr/local/lib -o miniperl \
miniperlmain.o opmini.o libperl.a -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
miniperlmain.o: In function `main':
miniperlmain.o(.text+0x3c): undefined reference to `perl_alloc'
libperl.a(sv.o): In function `perl_clone':
sv.o(.text+0x12053): undefined reference to `perl_clone_host'

This is happening both on Linux and AIX. Here's how I have run Configure:

./Configure -Dusethreads -Uuse5005threads -Duseithreads -Dusemultiplicity -Duselargefiles -Uusesocks -Uusemymalloc -Ubincompat5005

I have used defaults for all the questions, except for ccflags, where I
copied the suggested line and added -DPERL_IMPLICIT_SYS.

I know that PERL_IMPLICIT_SYS is supposed to go away, but we needed it
with Perl 5.6.1, otherwise interpreter kept core dumping when running it
in several threads.

Can someone please explain what to do ? I have looked at perl.c and
perl_alloc() is available only if PERL_IMPLICIT_SYS is not defined, yet
there's no such ifdef at the place where perl_alloc() is called in
miniperlmain.c. The same goes for perl_clone_host() - it's only
available for Windows and Netware, but the code in sv.c calls it.

Documentation in perlguts suggests this is only available for Windows,
but we managed to compile it for Unix too with Perl 5.6.1.

Thank you and best regards,
Goran

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupperl5-build @
categoriesperl
postedJan 29, '04 at 8:57a
activeJan 29, '04 at 8:57a
posts1
users1
websiteperl.org

1 user in discussion

Goran Koruga: 1 post

People

Translate

site design / logo © 2019 Grokbase