Как я могу использовать CERNLIB в моем коде Fortran? - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь использовать CERNLIB, в частности, для начала, функцию B100 (RBINOM). Я использую очень простой код Fortran, который будет использовать функцию DBINOM, предоставленную CERNLIB для вычисления биномиального коэффициента.

Проблема возникает при попытке получить доступ к самой функции. Этот конкретный файл должен быть в libmathlib от CERNLIB, но я не могу получить к нему доступ. Я пробовал разные команды, но ни одна из них, похоже, не работает

Мой код Fortran выглядит следующим образом:

  IMPLICIT NONE      
  INTEGER X,K
  DOUBLE PRECISION ANS
  DOUBLE PRECISION DBINOM

  X = 4
  K = 1
  ANS = DBINOM(X,K)
  WRITE(6,*) 'ANS = ',ANS

  END 

А затем, чтобы скомпилировать его, я использую:

 gfortran -o exemple.exe exemple.f -lmathlib

он компилируется, но дает бессмысленный результат, как будто он не идентифицирует какую-либо функцию там. Например, в нем говорится, что биномиальный коэффициент от 3 до 1 имеет порядок 10 ^ -314.

Если я теперь вручную добавлю библиотеку:

 gfortran -o exemple.exe exemple.f libmathlib.a -lmathlib

, это даст следующий вывод:

 /usr/bin/ld: libmathlib.a(binom64.o): undefined reference to symbol 'mtlprt_'
 //usr/lib/x86_64-linux-gnu/libpacklib.so.1_gfortran: error adding symbols: DSO missing from command line
 collect2: error: ld returned 1 exit status

, поэтому я не уверен, как получить доступ к функциям в CERNLIB, чтобы использовать их в моем коде. У кого-нибудь есть идея или можно привести пример?

Спасибо!

Л.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...