Subject: Problems compiling Perl
From: [email-masked]

23 Oct 1998 14:04:48 -0700
Message-ID: <[email-masked]>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1
Content-Transfer-Encoding: 7BIT
To: [email-masked]

First let me say I'm not basically a developer.  I use make files that
someone else has put together, but don't create them myself, for
example. When I try to build a complex package I only know vaguely
what I'm doing and count on the instructions to work.  ;-)

Following up on a threat :-) I made a few days ago I down-loaded the
latest_tar.gz perl source and set out to compile it.  My environment
is NT4Sp3, gcc version egcs-2.91.57 19980901 (egcs-1.1 release), and
from uname, version 19.3 of cygwin32.  My entire development and
working tree is within a single C:\xx\xx\ directory, mounted binary as /.
I've moved executables, libraries, include file (and everything else)
into a unix/linux like directory structure.  (/bin, /usr/bin,
/usr/include, /usr/local/ etc.).  I'm using Michael Hirmke's April
version of Vim for any file editing involved in making this work.

So much for background.  Some problems I had -- following the cygwin
32 instructions that came with the perl release.  I got around most of
them, but..

1.  Running Configure, it only stopped at every other question.  This
is reported to happen on win95/98, but not on NT.  I have NT.  It
happened.  I followed the alternative procedure of putting in the
hint/ suggestion for config.sh, manually editing it.  (It didn't seem
to have nearly enough questions.)  Then I ran sh Configure -d (non
interactive version).  

2. When I tried running make, I found that the make files had
pathnames of the form C:\\xxx\\xxx\\xx  instead of /bin, /usr/include,
and so on, as intended.  
*** Make (or gcc or?) couldn't find these files***
I edited appropriate GNUMakefile files to replace all C:'s with//c's,
and all \\ with /.  Now (a lot of it) worked.

3. Eventually, when it tried to call gcc thru gcc2 (a shell script
wrapper that comes with the perl distribution for use with cyg-win),
the path built into gcc2 turned out to be wrong. Fixed that, and got
by that step.

4. During my edit sessions, vim sometimes hung.  Somehow, key strokes
were not getting to vim, or in some cases, even to the window (i.e.,
bash wouldn't respond after killing vim from bash running in another
window).  This clearly is not a problem with the perl distribution,
but this is the first time I had this problem that I recall.  (By the
way, I have TERM=linux; I don't have tty set in CYGWIN since, when I
do, nothing that uses curses works right.)

5. OK.  I finally got it to compile.  There seems to be a working perl.
At least it processes a perl file with a single print statement
correctly.

6. Finally, we come to compiling the extensions.  There we have a hang
up I can't seem to resolve.   Here is the output from make that
bombed:

----
        Making B (dynamic)
LD_RUN_PATH="" ld2 -o ../../lib/auto/B/B.dll  -L/usr/local/lib B.o
gcc -c fixup.c
gcc -c init.cc
echo EXPORTS > B.def
nm B.o  init.o fixup.o | grep '^........ [TCD] _' | sed 's/[^_]*_//' >> B.def
ld --base-file B.base --dll -o B.dll B.o  init.o fixup.o -L/usr/local/lib -e _dl
l_entry@12
B.o(.text+0x16d):B.c: undefined reference to `__imp_Perl_opargs'
B.o(.text+0x2ec):B.c: undefined reference to `__imp_Perl_op_name'
B.o(.text+0x2f9):B.c: undefined reference to `Perl_warn'