У меня есть несколько файлов, которые мне нужно скомпилировать вместе, как указано ниже в моем 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, если они верны? Как мне их исправить?
Библиотеки установлены (не уверен, что с правильным путем).
Любой полезный комментарий высоко ценится.
р
Единственный путь, где он ищет лапаков /usr/lib
— поскольку это единственный каталог, который вы указали для компоновщика. Если библиотеки установлены в другом месте, вам придется это выяснить и
-L
параметр,/usr/lib
так что компоновщик может найти библиотеки.
Я не думаю что тебе нужно -L/usr/lib
как я полагаю, компилятор уже знает, где искать библиотеки. Тем не менее, вам нужно -L<path to where lapack libraries are>
если они не были установлены в стандартном месте.
Прежде всего, я бы предложил вам проверить, установлены ли библиотеки в правильных каталогах, как вы планировали сами. Очевидный способ сделать это — просто /usr/lib
и посмотрите, есть ли какие-либо библиотеки lapack (вы заметите их сразу).
Если все установлено там, где должно было быть, я бы предложил вам скомпилировать
-I /usr/local/include/lapackpp/
для заголовков и
-L /usr/local/lib -llapackpp
для библиотек, так как все библиотеки lapack должны быть доступны через него.
Кроме того, вы уверены, что хотите искать библиотеки в /usr/lib
, но не в /usr/local/lib
? Я думаю, что это зависит от ОС / настроек.
Наконец, некоторое время назад у меня была проблема, похожая на ту, что была у вас, и я нашел хорошее и четкое объяснение на этом сайте. 🙂
Отличный способ найти правильные флаги компилятора и компоновщика в зависимости от вашей ОС, архитектуры и т. Д. — использовать онлайн-инструмент Intel, который вы можете найти здесь:
https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor.
Чтобы получить к нему доступ, вам необходимо войти на сайт Intel.