Проблема
Я пытаюсь вызвать кумулятивную функцию распределения функции chisq в GSL от raku.
Это мой сценарий raku chisq.raku
#Calling gsl_cdf_chisq-P function in GSL from raku
use NativeCall;
sub gsl_cdf_chisq_P(num64, num64) returns num64 is native('gsl') { * };
sub gsl_cdf_chisq_Q(num64, num64) returns num64 is native('gsl') { * };
sub pchisq($q, $df, $lower-tail = True) {
my $a = $q.Num;
my $b = $df.Num;
if $lower-tail == True {
return gsl_cdf_chisq_P($a, $b)
} else {
return gsl_cdf_chisq_Q($a, $b)
}
}
say pchisq(3,4);
При выполнении этого скрипта я получаю следующую ошибку:
Cannot locate native library '(null)': /usr/lib/x86_64-linux-gnu/libgsl.so: undefined symbol: cblas_ctrmv
in method setup at /usr/share/perl6/core/sources/947BDAB9F96E0E5FCCB383124F923A6BF6F8D76B (NativeCall) line 286
in block gsl_cdf_chisq_P at /usr/share/perl6/core/sources/947BDAB9F96E0E5FCCB383124F923A6BF6F8D76B (NativeCall) line 578
in sub pchisq at chisq.raku line 13
in block <unit> at chisq.raku line 19
Читая документацию по NativeCall, я добавляю общую библиотеку libgsl.so
.
Поиск в Google показал, что cblas_ctrmv
, возможно (не уверен) был связан с .
Итак, я поискал liblapack.so
, который действительно присутствовал внутри /usr/lib
. echo $LD_LIBRARY_PATH
показал
/usr/local/lib/R/lib::/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server
Чтобы посмотреть, смогу ли я это исправить, я добавил /usr/lib
к LD_LIBRARY_PATH
с помощью команды export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib
и снова попытался запустить сценарий.
По-прежнему не работает, такое же сообщение об ошибке.
Среда:
Я запускаю код в контейнере докеров внутри rstudio.
Версия Raku 2019.11
В нем есть gsl-dev
файлов и gsl
библиотека. Контейнер имеет общую библиотеку libgsl.so
внутри /usr/lib/x86_64-linux-gnu/
. Другие общие библиотеки в этой папке:
Есть ли способ заставить его работать?
cblas_ctrmv
с соответствующей библиотекой в скрипте, чтобы его библиотека была зарегистрирована и, таким образом, ее можно было вызвать. - person jjmerelo   schedule 11.12.2019