Что не так с этой ссылкой на общую библиотеку? - PullRequest
0 голосов
/ 23 февраля 2012

Итак, я пытаюсь собрать GotoBLAS2 для использования в WIEN2k, и после использования make я вижу, что сборка GotoBLAS завершена (и, конечно, никаких ошибок, о которых сообщает make). Быстрая проверка файлов показывает, что оба libgoto2_prescottp-r1.13.a и libgoto2_prescottp-r1.13.so содержатся в каталоге / Research / GotoBLAS2 . Однако, используя небольшую тестовую программу для двойной проверки моей работы, я сталкиваюсь со следующей проблемой:

labadmin@Gateway:~/Research/Sr2YRuO6-110914$ gfortran Fit-4.2K-0T-110803test.f -L../GotoBLAS2 -lgoto2_prescottp-r1.13 -o Fit-4.2K-0T-110803test.x
labadmin@Gateway:~/Research/Sr2YRuO6-110914$ ./Fit-4.2K-0T-110803test.x
./Fit-4.2K-0T-110803test.x: error while loading shared libraries: libgoto2_prescottp-r1.13.so: cannot open shared object file: No such file or directory

Я признаю, что я довольно незнаком с связыванием разделяемых библиотек, но насколько я могу судить, используемые мной звонки были уместны. Может кто-нибудь помочь с этим? Спасибо!

1 Ответ

1 голос
/ 23 февраля 2012

Проблема заключается в том, что, хотя вы указали цепочке инструментов, где искать разделяемую библиотеку во время соединения с помощью флага -L, вы не предоставили загрузчику никакой информации о том, где найти зависимые библиотеки во время выполнения. Поэтому, когда вы пытаетесь запустить свой исполняемый файл, он не может найти библиотеку.

Вы не говорите, какую операционную систему вы используете, но я предполагаю, что Linux или что-то еще unix-y основано на ваших командах. В этом случае вы можете либо экспортировать значение для LD_LIBRARY_PATH (man ld-linux.so для linux, или каково бы ни было имя вашего компоновщика времени выполнения) в вашей среде, либо установить запись DT_RUNPATH в вашем исполняемом файле во время соединения для записи библиотеки путь для поиска (man ld или какой-либо ваш компоновщик в вашей системе).

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