сотового оператора: библиотека не загружается ... причина: картинка не загружается


при попытке запустить исполняемый файл, который я отправил в Mac OS X, я получаю следующую ошибку

dyld: Library not loaded: libboost_atomic.dylib
  Referenced from: /Users/"Directory my executable is in"
  Reason: image not found
Trace/BPT trap:5

Я установил библиотеки boost, и они расположены в /opt/local/lib. Я думаю, что проблема имеет какое-то отношение к исполняемому файлу, только глядя в каталог, в котором он находится, как когда я вставляю 'libboost_atomic.dylib ' там, он больше не возражает против этого. К сожалению, тогда он жалуется, что не может найти следующую библиотеку boost.

есть ли простой способ исправить это?

11 136

11 ответов:

найти все библиотеки boost:

$ otool -L exefile
exefile:
        @executable_path/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

и для каждого libboost_xxx.dylib, do:

$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile

и, наконец, проверить с помощью otool еще раз:

$ otool -L exefile
exefile:
        /opt/local/lib/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

Manpages:otoolinstall_name_tool

EDIT хотя это не обязательно относится к сторонним библиотекам (например, boost или Qt), если вы создаете приложение и .dylib из того же проекта Xcode, то вы можете на самом деле сделать это без используя install_name_tool установка Имя Установки Динамической Библиотеки в настройках сборки. Вот пример, который позволяет исполняемому приложению загружать .dylib С ../Frameworks/:

enter image description here

на цели General tab, есть Embedded Binaries field.

добавить framework и авария устранена.

enter image description here

нажмите на кнопку + подписать и добавить framework

для некоторых, это может быть так же просто, как системный путь для динамических библиотек. В OS X это так же просто, как установить DYLD_LIBRARY_PATH переменные среды. Смотрите:

можно ли использовать DYLD_LIBRARY_PATH на Mac OS X? И, что такое алгоритм динамического поиска библиотеки с ним?

я получил эту ошибку, когда пытался установить ruby 2.3.1 с помощью rvm. Он сначала сказал мне бежать brew update, что я и сделал, а затем, когда я попытался запустить rvm install ruby-2.3.1, Я получил ошибку в этом так вопрос.

исправление состояло в том, чтобы сначала запустить brew upgrade, по-видимому, в соответствии с этим superuser.com вопрос вам нужно сделать оба brew update &&brew upgrade. Как только это было сделано, я мог, наконец, установить ruby 2.3.1.

это сработало для меня:

brew upgrade node

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

Если путь к ним нужно изменить, используйте install_name_tool команда, которая позволяет задать путь к библиотекам.

Я здесь пытаюсь запустить программу, которую я только что скомпилировал с помощью CMake. Когда я пытаюсь запустить его, он жалуется, говоря:

dyld: Library not loaded: libboost_system.dylib
  Referenced from: /Users/path/to/my/executable
  Reason: image not found

Я обошел проблему, сказав CMake использовать статическую версию Boost, вместо того, чтобы позволить ей использовать динамическую:

set(Boost_USE_STATIC_LIBS ON)

можно использовать sudo install_name_tool -change изменить путь dylib И sudo install_name_tool -id изменить имя dylib

я исправляю это с помощью brew install libpng

для тех, кто пришел на эту страницу, потому что они получили эту ошибку, пытаясь связать стороннюю платформу с их проектом с помощью Xcode 6.3.1, проблема, с которой я столкнулся, заключалась в том, что библиотека создавалась с более старой версией компилятора, используя другую версию swift. Единственный способ исправить это для меня было в рамках.

еще одна причина, по которой вы можете получить это, указана в техническом документе Apple..

Если вы создаете приложение, которое не использует Swift, но внедряет контент, такой как фреймворк, который делает, Xcode не будет включать эти библиотеки в ваше приложение. В результате, ваше приложение аварии при запуске с сообщением об ошибке выглядит следующим образом:

установите встроенный контент содержит Swift-код (EMBEDDED_CONTENT_CONTAINS_SWIFT) build значение YES в вашем приложении

вот ссылка на полный документ Apple, который объясняет это здесь

Я столкнулся с проблемой сбоя приложения, цитируя ошибку SIGABRT в потоке.Обзор аварии библиотека dyld не загружается и изображение не найдено что-то вроде этого.

Это было видно в версии xcode 9.3.Причина, по которой я узнал, что xcode не собирает библиотеки динамически, поэтому мне пришлось сделать это вручную, что решило мою проблему с сбоем.

выполните следующие действия: Шаг 1: Перейти к этапам сборки Шаг 2: Нажмите кнопку " + "в верхней части и выберите" Новая фаза копирования файла" Шаг 3 : Выберите Назначение в качестве фреймворков и нажмите кнопку " + " ниже, чтобы добавить файлы. Шаг 4: выберите Добавить другие на ниже, нажмите CMD + SHIFT+G и вставьте ниже путь, /Применения/Xcode.app / Contents/Developer/Toolchains / XcodeDefault.xctoolchain/usr/lib/swift / iphoneos

теперь вы сможете увидеть некоторые swift dylibs, выберите все библиотеки swift .расширение dylib и нажмите кнопку Открыть.

Они будут добавлены к встроенным двоичным файлам на вкладке Общие приложение.

создайте новую группу в папке проекта и добавьте все эти библиотеки.

теперь запустите приложение.

Удачи В Кодировании