URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5784
[ Назад ]

Исходное сообщение
"cpan - ошибка работы модуля"

Отправлено FTPuser , 06-Окт-06 00:55 
В программе нужно считать ранги матриц. причем неквадратных. для этих целей был установлен из портов lapack и из исходников PDL:LinearAlgebra.
был создан для проверки файл:


localhost% cat linal.pl
#!/usr/local/bin/perl

use PDL;
use PDL::LinearAlgebra;
$a = random (100,100);
$b = mrank($a,1e-5);

который при вызове выдает ошибку.


localhost% ./linal.pl
/libexec/ld-elf.so.1: /usr/local/lib/perl5/site_perl/5.8.8/mach/auto/PDL/LinearAlgebra/Real/Real.so: Undefined symbol "dgesdd_"

хотя вот это тоже верно:


localhost% strings /usr/local/lib/perl5/site_perl/5.8.8/mach/auto/PDL/LinearAlgebra/Real/Real.so | grep dgesdd
dgesdd_

очень прошу помочь.


Содержание

Сообщения в этом обсуждении
"cpan - ошибка работы модуля"
Отправлено СергейК , 06-Окт-06 03:51 
>хотя вот это тоже верно:
>
 
>localhost% strings /usr/local/lib/perl5/site_perl/5.8.8/mach/auto/PDL/LinearAlgebra/Real/Real.so | grep dgesdd
>dgesdd_
>

Это ничего не доказывает. В таких случаях надо делать

 
localhost% nm /usr/local/lib/perl5/site_perl/5.8.8/mach/auto/PDL/LinearAlgebra/Real/Real.so | grep dgesdd

и тут вы увидите, что символ dgesdd_ помечен, как не определенный.

А dgesdd_ -- это символ из LAPACK'а
Так что, если у вас LAPACK не установлен, то установите его, и убедитесь, что его библиотеки лежат в директориях видных линкеру ( /etc/ld.so.conf ), или, если установили в какое-то свое место, то установите переменную окружения
export LD_LIBRARY_PATH=/path_to_lapack_installation/lib/


"cpan - ошибка работы модуля"
Отправлено FTPuser , 06-Окт-06 11:16 
>и тут вы увидите, что символ dgesdd_ помечен, как не определенный.
верно, именно так.
>
>А dgesdd_ -- это символ из LAPACK'а
>Так что, если у вас LAPACK не установлен, то установите его, и
>убедитесь, что его библиотеки лежат в директориях видных линкеру ( /etc/ld.so.conf
>), или, если установили в какое-то свое место, то установите переменную
>окружения
>export LD_LIBRARY_PATH=/path_to_lapack_installation/lib/


localhost% ls /usr/local/lib | grep lapack
liblapack.a
liblapack.so
liblapack.so.3
liblapack_p.a

localhost% cat /usr/compat/linux/etc/ld.so.conf
/lib
/usr/lib
/usr/local/lib
/usr/X11R6/lib

так что неясно, чего не хватает. lapack был установлен и ранее, а вот ld.so.conf я правил уже по вашему совету. даже PDL:LinAlg потом пересобрал. и переменную тоже пробовал ставить. результат старый.

файла /etc/ld.so.conf у меня почему-то не было. но даже после того, как он был создан с содержимым описанным выше, ничего не изменилось.