Russian Qt Forum
Ноябрь 22, 2024, 13:17
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Компиляторы и платформы
>
Mac OS X
>
[Решено]Mac OS X: не могу запустить проект, ошибка с DYLD
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [Решено]Mac OS X: не могу запустить проект, ошибка с DYLD (Прочитано 20152 раз)
mezmay
Гость
[Решено]Mac OS X: не могу запустить проект, ошибка с DYLD
«
:
Июнь 16, 2015, 09:29 »
Mac OS X Yosemite. Первый раз сел на Мак.
Переношу с винды проект на Qt Creator, использующий Intel IPP. Не запускается. После долгого гугления думаю что дело в каком-то новом замуте Mac OS с путями поиска библиотек, начавшевшемся с Maverics.
Описание:
Qt Creator, Intel IPP 2015.
Пытаюсь запустить проект в Qt Creator, получаю ошибку:
Цитировать
dyld: Library not loaded: ./libipps-8.2.dylib Referenced from:
/my_path/my_app.app/Contents/MacOS/my_app
Reason: image not found
Путь к динамическим библиотекам IPP прописан в .pro файле:
Цитировать
LIBS += -L/opt/intel/ipp/lib/ -lipps -lippcore
Также я добавлял этот путь в переменные среды
DYLD_LIBRARY_PATH
и
DYLD_FALLBACK_LIBRARY_PATH
, но это не помогло.
Темы где может быть зацепка:
https://www.exelisvis.com/Support/Forums/tabid/184/forumid/7/threadid/15908/scope/posts/threadpage/1/Default.aspx
http://www.cyberforum.ru/qt/thread1275600.html
«
Последнее редактирование: Июнь 29, 2015, 23:13 от mezmay
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #1 :
Июнь 16, 2015, 17:41 »
А зачем эти все пути - заливайте все в bundle, тогда можно просто копировать на др машину.
Записан
mezmay
Гость
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #2 :
Июнь 17, 2015, 09:10 »
А из среды как запустить?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #3 :
Июнь 17, 2015, 10:24 »
Цитата: mezmay от Июнь 17, 2015, 09:10
А из среды как запустить?
Не знаю, я всегда делаю "полное" приложение со всеми нужными либами в bundle, оно запускается хоть из IDE хоть как.
Вообще сделано очень удобно, особенно по сравнению с Вындоуз. Каждая dylib содержит путь откуда она сама может грузиться и пути где искать свои dylib. Это можно посмотреть (otool -L <имя dylib>) и изменить (см. change_install_name). Копируете все нужные dylib куда-нибудь, напр в фолдер Libs. Меняете в копиях все пути на @executable_path. В конце билда ставите скрипт который копирует содержимое Libs в /Content/MacOS. Это все делается один раз
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #4 :
Июнь 17, 2015, 10:34 »
Цитата: Igors от Июнь 17, 2015, 10:24
@executable_path
@rpath
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #5 :
Июнь 17, 2015, 10:41 »
Цитировать
А из среды как запустить?
Если имеется ввиду из QtCreator - то очень просто: в свойствах проекта, там где
Project->Build(Run)-> Build (Run) Environment
нужно создать новую переменную типа DYLD_LIBRARY_PATH (или как там оно в маке) и установить ей значение "opt/intel/ipp/lib/".
Там вроде-как надо делать это в
Build Environment
и убедиться что в
Run Environment
эта переменная тоже появилась (она должна автоматом подхватиться туда).
Но если ее там (в Run) нет - то скопипастить.
На этом все - можно запускать проект!
Цитировать
Также я добавлял этот путь в переменные среды DYLD_LIBRARY_PATH и DYLD_FALLBACK_LIBRARY_PATH, но это не помогло.
Не может быть! (упс, не дочитал до этого)
«
Последнее редактирование: Июнь 17, 2015, 10:44 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
mezmay
Гость
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #6 :
Июнь 17, 2015, 10:50 »
Цитата: kuzulis от Июнь 17, 2015, 10:41
Не может быть! (упс, не дочитал до этого)
https://stackoverflow.com/questions/30872420/cannot-set-custom-path-for-qt-creator-on-os-x-10-10
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #7 :
Июнь 17, 2015, 11:35 »
Цитата: Авварон от Июнь 17, 2015, 10:34
@rpath
А что оно делает? Ищет сначала в @executable_path, потом в @loader_path (удобно чтобы не чикаться с плагинами). Или где-то еще или как? Спасибо
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #8 :
Июнь 17, 2015, 11:36 »
Цитата: mezmay от Июнь 17, 2015, 10:50
Цитата: kuzulis от Июнь 17, 2015, 10:41
Не может быть! (упс, не дочитал до этого)
https://stackoverflow.com/questions/30872420/cannot-set-custom-path-for-qt-creator-on-os-x-10-10
Хм.. у меня работала установка DYLD_LIBRARY_PATH.
Записан
ArchLinux x86_64 / Win10 64 bit
mezmay
Гость
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #9 :
Июнь 17, 2015, 13:03 »
Цитата: Igors от Июнь 17, 2015, 10:24
Вообще сделано очень удобно, особенно по сравнению с Вындоуз. Каждая dylib содержит путь откуда она сама может грузиться и пути где искать свои dylib. Это можно посмотреть (otool -L <имя dylib>) и изменить (см. change_install_name). Копируете все нужные dylib куда-нибудь, напр в фолдер Libs. Меняете в копиях все пути на @executable_path. В конце билда ставите скрипт который копирует содержимое Libs в /Content/MacOS. Это все делается один раз
@executable_path ведет в /Content/MacOS, или надо ставить /@executable_path/Content/MacOS ?
И если мне надо будет из программы запускать другой app-ник (из командной строки), его тоже в /Content/MacOS ?
«
Последнее редактирование: Июнь 17, 2015, 13:04 от mezmay
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #10 :
Июнь 17, 2015, 13:33 »
Цитата: mezmay от Июнь 17, 2015, 13:03
@executable_path ведет в /Content/MacOS, или надо ставить /@executable_path/Content/MacOS ?
И если мне надо будет из программы запускать другой app-ник (из командной строки), его тоже в /Content/MacOS ?
Пример: Вы подключили к проекту какой-то dylib. Линкер полез в этот dylib, выцепил "собственный путь" этой либы (то что otool покажет первой строкой) и этот путь вписал в Ваш исполняемый файл. Путь может и не совпадать с тем где dylib сейчас. Приложение запустилось, ищет dylib по этому пути. Найдя проверяет "собственный" путь (что вписан в ней самой). Ага - совпадают, все, грузим.
Наберите
Цитировать
otool -L <имя dylib>
и скопируйте сюда выхлоп, так будет проше
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #11 :
Июнь 17, 2015, 15:29 »
Цитата: Igors от Июнь 17, 2015, 11:35
Цитата: Авварон от Июнь 17, 2015, 10:34
@rpath
А что оно делает? Ищет сначала в @executable_path, потом в @loader_path (удобно чтобы не чикаться с плагинами). Или где-то еще или как? Спасибо
В линухах рпатх ищет в
списке
путей, прописанных в бинарь. @executable_path ищет только в одном (жестко зашитом) пути
Записан
mezmay
Гость
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #12 :
Июнь 18, 2015, 09:43 »
Вчера добавил в креаторе в переменную
PATH
(не DYLIB_LIBRARY_PATH) путь /opt/intel/ipp/lib. Заработал запуск из Creator'a. Повторюсь, мне надо запускать именно из него для отладки. Но потом решил поменять длинную часть пути а-ля
/build-untitled-Desktop_Qt_5_4_2_clang_OpenGL_64bit-Debug
на просто
/Debug
. Везде поменял, все компилится куда надо. Но перестало запускаться из под среды с той же ошибкой что и в первом посте.
Возвращаться к предыдущей версии уже нервов не хватило, сегодня буду пробовать.
«
Последнее редактирование: Июнь 18, 2015, 10:24 от mezmay
»
Записан
mezmay
Гость
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #13 :
Июнь 18, 2015, 11:07 »
И otool -L от моего исполняемого файла выдает:
Цитировать
./libipps-8.2.dylib
./libippcore-8.2.dylib
почему он тогда не запускается при лежащих в /Contents/MacOS/ (а также рядом с .app) библиотеках ?:
Цитировать
dyld: Library not loaded: ./libipps-8.2.dylib
...
«
Последнее редактирование: Июнь 18, 2015, 11:19 от mezmay
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Mac OS X: не могу запустить проект, ошибка с DYLD
«
Ответ #14 :
Июнь 18, 2015, 11:51 »
Цитата: mezmay от Июнь 18, 2015, 11:07
И otool -L от моего исполняемого файла выдает:
Цитировать
./libipps-8.2.dylib
./libippcore-8.2.dylib
почему он тогда не запускается при лежащих в /Contents/MacOS/ (а также рядом с .app) библиотеках ?:
Не знаю, должен. Наберите
Цитировать
export PRINT_DYLD_LIBRARIES=1
, в консоли будут печататься все загружаемые либы. Оно Вам надо разбираться где там текущий путь? Вы хотите держать эту либу напр в /opt/intel/ipp/lib, ну и пропишите этот путь в самой dylib и перелинкуйте. И будет грузить оттуда без разницы из среды или как
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...