Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiler desn't work on static-linked installation #52

Closed
p5pRT opened this issue Jun 10, 1999 · 4 comments
Closed

Compiler desn't work on static-linked installation #52

p5pRT opened this issue Jun 10, 1999 · 4 comments

Comments

@p5pRT
Copy link
Collaborator

@p5pRT p5pRT commented Jun 10, 1999

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

Searchable as RT854$

@p5pRT
Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 10, 1999

From domo@vo.lu

[resend​: bounced at defender.perl.org wih this lot last time​:
RFgen​::logg(Initial​: [12884] (/home/richard/bugs/logs/pb_19990609) /home/richard/bugs/scripts/tm_mailproc.pl set) can't open today's log (/home/richard/bugs/logs/pb_19990609)! Permission denied at /home/richard/site_perl/RFgen.pm line 193, <STDIN> chunk 126.
554 "|/home/richard/bugs/scripts/tm_mailproc.pl"... unknown mailer error 13
]

When I attempt to use perlcc to compile any Perl program, the
diagnostic output includes many line-pairs of the type

No definition for sub Fcntl​::F_DUPFD
No definition for sub Fcntl​::F_DUPFD (unable to autoload)

Further, if I attempt to compile a program that uses some module with
an XS component (for example, Socket), the output includes more
warnings relating to that module​:

No definition for sub Socket​::MSG_PROXY
No definition for sub Socket​::MSG_PROXY (unable to autoload)

and so on.

On reaching the link stage, ld complains

/tmp/cc0004921.o(.rw+0xcf70)​:t.p.c​: undefined reference to `XS_Fcntl_constant'

and maybe

t2.p.o(.rw+0x12ade)​:t2.p.c​: undefined reference to `XS_Socket_pack_sockaddr_in'

and so on, and produces no executable.

A hacky way round this is to rerun the cc command line produced by
perlcc, but adding the relevant module library names (such as
/usr/local/lib/perl5/5.00557/powerpc-machten/auto/Fcntl/Fcntl.a)
after -lperl. This produces working output.

Looking at B/C.pm, I see the warnings are coming from and try_autoload()
and B​::CV​::save(). But I don't know where to start in persuading these
functions to add the relevant static library to the cc command line
(if it hasn't already been added) on encountering an external function
instead of doing whatever it is that they do now in order to get a
dynamic library to satisfy the reference. (Or I suppose you could just
add all installed module libraries unconditionally, as makemaker does.)

Perl Info


Site configuration information for perl 5.00557:

Configured by domo at Sat May 29 19:17:27 WET DST 1999.

Summary of my perl5 (revision 5.0 version 5 subversion 57) configuration:
  Platform:
    osname=machten, osvers=4.1.1, archname=powerpc-machten
    uname='machten ppp1 4 1.1 powerpc '
    config_args='-des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
    use64bits=undef usemultiplicity=undef
  Compiler:
    cc='cc', optimize='-O2 -fomit-frame-pointer', gccversion=2.8.1
    cppflags='-DNOTDEF_MACHTEN -DREG_INFTY=2047'
    ccflags ='-DNOTDEF_MACHTEN -DREG_INFTY=2047'
    stdchar='char', d_stdstdio=undef, usevfork=true
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
    alignbytes=8, usemymalloc=y, prototype=define
  Linker and Libraries:
    ld='ld', ldflags =' -Xlstack=1048576 -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib
    libs=-lndbm -lgdbm -ldb -ldl -lm -lc
    libc=/usr/lib/libc.a, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_none.xs, dlext=none, d_dlsymun=undef, ccdlflags=''
    cccdlflags='', lddlflags=''

Locally applied patches:
    
    [eval patch from "Trying out the compiler" "Vishal Bhatia"
        <vishalb@my-deja.com> to p5p, Fri, 28 May 1999 02:30:50 -0700]

@INC for perl 5.00557:
    /usr/local/lib/perl5/5.00557/powerpc-machten
    /usr/local/lib/perl5/5.00557
    /usr/local/lib/perl5/site_perl/5.00557/powerpc-machten
    /usr/local/lib/perl5/site_perl/5.00557
    .


Environment for perl 5.00557:
    HOME=/home/domo
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH=/usr/lib
    LOGDIR (unset)
    PATH=/sbin:/usr/sbin:/home/domo/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11/bin:/usr/libexec
    PERL_BADLANG (unset)
    SHELL=/bin/bash

-- 
Dominic Dunlop



@p5pRT
Copy link
Collaborator Author

@p5pRT p5pRT commented Mar 20, 2000

From [Unknown Contact. See original ticket]

Anyone else seen a duplicate of this problem? I'm building a static
installation to test.

Nat

When I attempt to use perlcc to compile any Perl program, the
diagnostic output includes many line-pairs of the type

No definition for sub Fcntl​::F_DUPFD
No definition for sub Fcntl​::F_DUPFD (unable to autoload)

Further, if I attempt to compile a program that uses some module with
an XS component (for example, Socket), the output includes more
warnings relating to that module​:

No definition for sub Socket​::MSG_PROXY
No definition for sub Socket​::MSG_PROXY (unable to autoload)

and so on.

@p5pRT
Copy link
Collaborator Author

@p5pRT p5pRT commented Mar 21, 2000

From [Unknown Contact. See original ticket]

At 21​:55 -0700 2000-03-20, Nathan Torkington wrote​:

When I attempt to use perlcc to compile any Perl program, the
diagnostic output includes many line-pairs of the type

No definition for sub Fcntl​::F_DUPFD
No definition for sub Fcntl​::F_DUPFD (unable to autoload)

Anyone else seen a duplicate of this problem? I'm building a static
installation to test.

Yes, I see that too. (Static build of RC2 for MachTen 4.1.4.) Byte
code compile works, FWIW. No time to investigate just now.
--
Dominic Dunlop

@p5pRT
Copy link
Collaborator Author

@p5pRT p5pRT commented Dec 14, 2000

From [Unknown Contact. See original ticket]

This ticket, against 5.005_57, can be closed​: bleadperl perlcc now
des, er does, work on MachTen, a statically-linked system. (Doesn't
on 5.6.0, however -- but 5.6.0 perlcc's pretty broken in general I
believe.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant
You can’t perform that action at this time.