компиляция — c ++ и ссылка на lapack

У меня есть несколько файлов, которые мне нужно скомпилировать вместе, как указано ниже в моем make-файле (имена теперь пустые):

compile:
g++ prog1.cpp func1.cpp func2.cpp func3.cpp -L/usr/lib/ -lmkl_lapack64 -lmkl
-lguide -lpthread -o output_ready.out

Когда я делаю компиляцию, я получаю следующие ошибки:

/usr/bin/ld: cannot find -lmkl_lapack64
/usr/bin/ld: cannot find -lmkl
/usr/bin/ld: cannot find -lguide
collect2: ld returned 1 exit status
make: *** [compile] Error 1

Эта программа была правильно скомпилирована на другом компьютере ранее.

Q: Как я могу проверить путь к liback, если они верны? Как мне их исправить?
Библиотеки установлены (не уверен, что с правильным путем).

Любой полезный комментарий высоко ценится.
р

1

Решение

Единственный путь, где он ищет лапаков /usr/lib — поскольку это единственный каталог, который вы указали для компоновщика. Если библиотеки установлены в другом месте, вам придется это выяснить и

  • предоставить это местоположение компоновщику через другое -L параметр,
  • или переместить библиотеку /usr/lib

так что компоновщик может найти библиотеки.

1

Другие решения

Я не думаю что тебе нужно -L/usr/lib как я полагаю, компилятор уже знает, где искать библиотеки. Тем не менее, вам нужно -L<path to where lapack libraries are> если они не были установлены в стандартном месте.

1

Прежде всего, я бы предложил вам проверить, установлены ли библиотеки в правильных каталогах, как вы планировали сами. Очевидный способ сделать это — просто /usr/lib и посмотрите, есть ли какие-либо библиотеки lapack (вы заметите их сразу).

Если все установлено там, где должно было быть, я бы предложил вам скомпилировать

-I /usr/local/include/lapackpp/

для заголовков и

-L /usr/local/lib -llapackpp

для библиотек, так как все библиотеки lapack должны быть доступны через него.

Кроме того, вы уверены, что хотите искать библиотеки в /usr/lib, но не в /usr/local/lib? Я думаю, что это зависит от ОС / настроек.

Наконец, некоторое время назад у меня была проблема, похожая на ту, что была у вас, и я нашел хорошее и четкое объяснение на этом сайте. 🙂

1

Отличный способ найти правильные флаги компилятора и компоновщика в зависимости от вашей ОС, архитектуры и т. Д. — использовать онлайн-инструмент Intel, который вы можете найти здесь:

https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor.

Чтобы получить к нему доступ, вам необходимо войти на сайт Intel.

0
По вопросам рекламы [email protected]