![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
Доброго времени суток!
Пытаюсь создать приложение, которое будет полностью переносимым (в файловой системе), следовательно все пути к библиотекам указаны через rpath. Есть OpenCV, который скомпилирован с поддержкой CUDA 4.0 и путь к CUDA-библиотекам указан через относительный rpath. ldd, показывает, что все зависимые библиотеки успешно находятся. Также на сервере установлена 4.1, пути к которой прописаны в /etc/ld.so.conf.d/. При попытке скомпилировать приложение, в зависимостях которого оказывается библиотека libopencv_gpu.su возникает ошибка:
При компиляции приложения указывается абсолютный rpath к каталогу ~/opt/icmm/opencv/2.3.1/lib64/. Похоже, что линькер пытается найти эти символы в системной CUDA 4.1, а не в той, с которой скомпилирована opencv. Подскажите пожалуйста, как можно решить эту проблему? Ситуация осложняется тем, что я в общем случае не знаю скомпилирован ли OpenCV с поддержкой CUDA и если да, то какой версии. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
покажи командную строку линкера.
|
|||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
boostcoder,
Строка линькера сгенерирована cmake:
Это сообщение отредактировал(а) phprus - 29.2.2012, 10:31 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
phprus, последний пост у тебя нормально отображается? у меня он шесть экранов в ширину.
к тому же, командная строка такого объема совершенно нечитаема)
зы а что, cлов "нечитаем"/"нечитаема" нет в русском языке? или они как-то иначе пишутся? Это сообщение отредактировал(а) boostcoder - 28.2.2012, 12:14 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
||||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
boostcoder,
bsa, Упс... Прошу прощения, написал пост и убежал совершенно не посмотрев, как он выглядит. Был удивлен, что тег code так разъезжается... На той системе, где это собирается я не рут, по этому так сделать мне никто не даст, а в тестовом окружении попробую проверить. |
|||
|
||||
phprus |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
А если системной нет вообще, то все еще хуже:
При этом:
Из чего можно сделать вывод, что библиотеки успешно находятся библиотекой libopencv_gpu.so. Необходимо отметить, что библиотеки cuda не содержат в себе RPATH. |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
||||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
Эти символы только в кастомной (4.0). ABI немножко поломалось в версиях 4.0/ 4.1. Но я пока не очень понимаю почему линькер проверяет зависимости используемых библиотек и при этом похоже не смотрит на их RPATH... |
|||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
Сделал workaround на базе добавления в -rpath-link всех возможных каталогов проекта, в которых есть .so файлы. Теперь все компилируется и работает так, как и задумано.
Осталось только понять, почему линькер отказывался использовать RPATH библиотек для поиска их зависимостей... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |