ошибки при сборке perl 5.14.2

Здравствуйте! Установил новую версию Kubuntu 11.10, до этого была версия 11.04. В 11.10 по умолчанию установлена версия perl 5.12.4, но хочется самую свежую версию. Поискав в репозитариях, но не нашел. Решил собрать с исходников, но во время компиляции выдалось 2 ошибки:

cc -lm -fstack-protector -L/usr/local/lib -o miniperl \
gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o keywords.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 globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \
miniperlmain.o opmini.o perlmini.o
pp.o: In function `Perl_pp_pow':
pp.c:(.text+0x32f7): undefined reference to `pow'
pp.o: In function `Perl_pp_modulo':
pp.c:(.text+0x3de8): undefined reference to `floor'
pp.c:(.text+0x3e11): undefined reference to `floor'
pp.c:(.text+0x4037): undefined reference to `fmod'
pp.o: In function `Perl_pp_atan2':
pp.c:(.text+0x7c97): undefined reference to `atan2'
pp.o: In function `Perl_pp_sin':
pp.c:(.text+0x7e45): undefined reference to `sin'

Погуглив в интернете, определил, что компилятор не видит (не может подключить) библиотеку libm.so
Для этого предпринял следующие действия:
$ locate libm.so
/lib/i386-linux-gnu/libm.so.6
/usr/lib/i386-linux-gnu/libm.so
$ cd /usr/lib
$ ln -s /usr/lib/i386-linux-gnu/libm.so

Данная ошибка исчезла, но появилась новая. Теперь потребовалась библиотека librt.so. Для этого выполнил аналогичные действия:
$ cd /usr/lib
$ ln -s /usr/lib/i386-linux-gnu/librt.so

Ошибки исчезли. Теперь при тестировании командой make test в конце были выданы ошибки:
lib/warnings...................................................PROG:
use warnings 'uninitialized';
my ($m1, $v);
our ($g1);

$v = crypt $m1, $g1;

$v = ord;
$v = ord $m1;
$v = chr;
$v = chr $m1;

$v = ucfirst;
$v = ucfirst $m1;
$v = lcfirst;
$v = lcfirst $m1;
$v = uc;
$v = uc $m1;
$v = lc;
$v = lc $m1;

$v = quotemeta;
$v = quotemeta $m1;
EXPECTED:
Use of uninitialized value $m1 in crypt at - line 5.
Use of uninitialized value $g1 in crypt at - line 5.
Use of uninitialized value $_ in ord at - line 7.
Use of uninitialized value $m1 in ord at - line 8.
Use of uninitialized value $_ in chr at - line 9.
Use of uninitialized value $m1 in chr at - line 10.
Use of uninitialized value $_ in ucfirst at - line 12.
Use of uninitialized value $m1 in ucfirst at - line 13.
Use of uninitialized value $_ in lcfirst at - line 14.
Use of uninitialized value $m1 in lcfirst at - line 15.
Use of uninitialized value $_ in uc at - line 16.
Use of uninitialized value $m1 in uc at - line 17.
Use of uninitialized value $_ in lc at - line 18.
Use of uninitialized value $m1 in lc at - line 19.
Use of uninitialized value $_ in quotemeta at - line 21.
Use of uninitialized value $m1 in quotemeta at - line 22.
GOT:
The crypt() function is unimplemented due to excessive paranoia. at - line 5.
# Failed at ./test.pl line 1000
FAILED at test 259
t/x2p/s2p......................................................ok
t/porting/FindExt..............................................skipped
t/porting/args_assert..........................................ok
t/porting/authors..............................................skipped
t/porting/bincompat............................................ok
t/porting/buildtoc.............................................ok
t/porting/checkcase............................................ok
t/porting/cmp_version..........................................skipped
t/porting/diag.................................................ok
t/porting/dual-life............................................ok
t/porting/exec-bit.............................................ok
t/porting/filenames............................................ok
t/porting/maintainers..........................................ok
t/porting/manifest.............................................ok
t/porting/podcheck.............................................ok
t/porting/regen................................................ok
t/porting/test_bootstrap.......................................ok
Failed 3 tests out of 1899, 99.84% okay.
../ext/DynaLoader/t/DynaLoader.t
../lib/warnings.t
op/taint.t
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
### ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
u=8.36 s=2.69 cu=259.56 cs=22.69 scripts=1899 tests=439966
make: *** [test] Ошибка 1

Выполняемые действия для сборки Perl 5.14.2:
$ ./Configure -des
$ make
$ make test

Компилятор GCC 4.6.1
При этом в прошлой версии Kubuntu 11.04 и GCC 4.5.2 компиляция этой версии Perl была успешной

0
Гость - 27 Февраль, 2012 - 10:42

У меня такая же штука на ubuntu 11.10... вообщем этот вопрос связан с
(это из Redmi for linux)
Sun Microsystems has released a port of their Sun Studio compilers for
Linux. As of November 2005, only an alpha version has been released.
Until a release of these compilers is made, support for compiling Perl with
these compiler experimental.

Also, some special instructions for building Perl with Sun Studio on Linux.
Following the normal C, you have to run make as follows:

LDLOADLIBS=-lc make

C is an environment variable used by the linker to link modules
C modules to glibc. Currently, that environment variable is not getting
populated by a combination of C entries and C.
While there may be a bug somewhere in Perl's configuration or
C causing the problem, the most likely cause is an
incomplete understanding of Sun Studio by this author. Further investigation
is needed to get this working better.

=====
Вообщем я просто поставил виртуалку с Freebsd 9.0 и ставлю все на неё и в ней работаю

0
Tonal - 28 Февраль, 2012 - 08:40
Изображение пользователя Tonal.

Вроде для 12.04 собрано.
Так что можно или дождаться 12.04б или выдернуть исходники и собрать на 11.10.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры