Mark Bishop
2012-08-28 16:26:04 UTC
I'm getting errors building perl from the SVN head. Should I just
move the offending line from fork() to vfork() and be done with it or
is this something bigger? My goal is to use perl for some simple CGI
web pages from boa. Would python be a better option? (However, I
have no experience with python.) I'm not sure if miniperl has
everything I need until I try it.
mark at linux-hez9:~/new_image/uclinux-dist-ipc> make user/perl_only
make[1]: Entering directory `/home/mark/new_image/uclinux-dist-ipc/user'
touch perl/.sgbuilt_user && make -C perl -j1
make[2]: Entering directory `/home/mark/new_image/uclinux-dist-ipc/user/perl'
bfin-linux-uclibc-gcc -mcpu=bf548-0.2 -o miniperl \
miniperlmain.o opmini.o libperl.a -lnsl -ldl -lm -lcrypt -lutil -lc
libperl.a(util.o): In function `Perl_my_fork':
/home/mark/new_image/uclinux-dist-ipc/user/perl/util.c:2360: undefined
reference to `_fork'
/home/mark/new_image/uclinux-dist-ipc/user/perl/util.c:2360: undefined
reference to `_fork'
/home/mark/new_image/uclinux-dist-ipc/user/perl/util.c:2360: undefined
reference to `_fork'
collect2: ld returned 1 exit status
make[2]: *** [miniperl] Error 1
make[2]: Leaving directory `/home/mark/new_image/uclinux-dist-ipc/user/perl'
make[1]: *** [perl_only] Error 2
make[1]: Leaving directory `/home/mark/new_image/uclinux-dist-ipc/user'
make: *** [user/perl_only] Error 2
mark at linux-hez9:~/new_image/uclinux-dist-ipc>
Offending code in util.c:
Pid_t
Perl_my_fork(void)
{
#if defined(HAS_FORK)
Pid_t pid;
#if (defined(USE_5005THREADS) || defined(USE_ITHREADS)) &&
!defined(HAS_PTHREAD_ATFORK)
atfork_lock();
pid = fork();
atfork_unlock();
#else
/* atfork_lock() and atfork_unlock() are installed as pthread_atfork()
* handlers elsewhere in the code */
pid = fork(); <<<------ HERE
#endif
return pid;
#else
/* this "canna happen" since nothing should be calling here if
!HAS_FORK */
Perl_croak_nocontext("fork() not available");
return 0;
#endif /* HAS_FORK */
}
move the offending line from fork() to vfork() and be done with it or
is this something bigger? My goal is to use perl for some simple CGI
web pages from boa. Would python be a better option? (However, I
have no experience with python.) I'm not sure if miniperl has
everything I need until I try it.
mark at linux-hez9:~/new_image/uclinux-dist-ipc> make user/perl_only
make[1]: Entering directory `/home/mark/new_image/uclinux-dist-ipc/user'
touch perl/.sgbuilt_user && make -C perl -j1
make[2]: Entering directory `/home/mark/new_image/uclinux-dist-ipc/user/perl'
bfin-linux-uclibc-gcc -mcpu=bf548-0.2 -o miniperl \
miniperlmain.o opmini.o libperl.a -lnsl -ldl -lm -lcrypt -lutil -lc
libperl.a(util.o): In function `Perl_my_fork':
/home/mark/new_image/uclinux-dist-ipc/user/perl/util.c:2360: undefined
reference to `_fork'
/home/mark/new_image/uclinux-dist-ipc/user/perl/util.c:2360: undefined
reference to `_fork'
/home/mark/new_image/uclinux-dist-ipc/user/perl/util.c:2360: undefined
reference to `_fork'
collect2: ld returned 1 exit status
make[2]: *** [miniperl] Error 1
make[2]: Leaving directory `/home/mark/new_image/uclinux-dist-ipc/user/perl'
make[1]: *** [perl_only] Error 2
make[1]: Leaving directory `/home/mark/new_image/uclinux-dist-ipc/user'
make: *** [user/perl_only] Error 2
mark at linux-hez9:~/new_image/uclinux-dist-ipc>
Offending code in util.c:
Pid_t
Perl_my_fork(void)
{
#if defined(HAS_FORK)
Pid_t pid;
#if (defined(USE_5005THREADS) || defined(USE_ITHREADS)) &&
!defined(HAS_PTHREAD_ATFORK)
atfork_lock();
pid = fork();
atfork_unlock();
#else
/* atfork_lock() and atfork_unlock() are installed as pthread_atfork()
* handlers elsewhere in the code */
pid = fork(); <<<------ HERE
#endif
return pid;
#else
/* this "canna happen" since nothing should be calling here if
!HAS_FORK */
Perl_croak_nocontext("fork() not available");
return 0;
#endif /* HAS_FORK */
}