При попытке запустить исполняемый файл, который мне отправили в 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
Я установил библиотеки наддува, и они находятся в /opt/local/lib
. Я думаю, что проблема как-то связана с тем, что исполняемый файл выглядит только в каталоге, в котором он находится, например, когда я вставляю туда libboost_atomic.dylib, он больше не возражает против этого. К сожалению, тогда он жалуется, что не может найти следующую библиотеку наддува.
Есть ли простой способ это исправить?
Ответы:
Найти все библиотеки поддержки:
и для каждого
libboost_xxx.dylib
:и, наконец, проверьте еще
otool
раз:: страницы руководства
otool
install_name_tool
РЕДАКТИРОВАТЬ Некоторое время назад я написал скрипт Python (
copy_dylibs.py
) для автоматической обработки всего этого при создании приложения. Он упакует все библиотеки из/usr/local
или/opt/local
в комплект приложения и исправит ссылки на эти библиотеки для использования@rpath
. Это означает, что вы можете легко установить стороннюю библиотеку с помощью Homebrew и упаковать их так же легко.Теперь я опубликовал этот скрипт на github .
источник
DYLD_LIBRARY_PATH
для изменения пути поиска. Другой ответ получил это.exefile
обозначает исполняемый файл, который вы пытаетесь запустить. В моем случаеotool -L /usr/local/bin/php
сделали свое дело .На
General
вкладке цели есть раздел под названиемFrameworks, Libraries, and Embedded Content
Нажмите на
+
знак, добавьте необходимое,framework
и сбой будет решен.источник
LC_ID_DYLIB
мне не нужно делать символическую ссылку в usr / loca / opt! есть ли способ выяснить? : | Это больно :(Это сработало для меня:
источник
node
с помощью homebrew. Вероятно, другая установка сломала путь к узлу. Также работал для меня.После обновления Mac OS до Мохаве. Я попытался установить модули npm через
yarn
команду, я получил ошибку:Исправлено с помощью:
источник
node --version
в моей системе привел к той же ошибке. Выполнение двух вышеуказанных команд решило мою проблему.brew cleanup
команду, что иногда полезно, если вы хотите избавиться от старых версий.brew cleanup
то это исправленоДля некоторых это может быть так же просто, как установка системного пути для динамических библиотек. На OS X это так же просто, как установка
DYLD_LIBRARY_PATH
переменной среды. Видеть:Можно ли использовать DYLD_LIBRARY_PATH в Mac OS X? И что за алгоритм динамического поиска в библиотеке?
источник
DYLD_LIBRARY_PATH
?DYLD_LIBRARY_PATH
. Правильное решение состоит в том, чтобы включить нестандартные библиотеки,.app
и пользователю не нужно ничего делать. Разработчику, однако, возможно, все равно придется взломать путь загрузчика согласно моему ответу.Я получил эту ошибку, когда попытался установить ruby 2.3.1 с помощью rvm. Сначала он сказал мне бежать
brew update
, что я и сделал, а затем, когда я попытался бежатьrvm install ruby-2.3.1
, я получил ошибку в этом вопросе SO.Исправление состояло в том, чтобы сначала запустить
brew upgrade
, по-видимому, в соответствии с этим вопросом superuser.com, вы должны сделать обаbrew update
&&brew upgrade
. Как только это будет сделано, я смог наконец установить ruby 2.3.1.источник
brew upgrade
именно так. Это может стать серьезным нарушителем для всей системы. Вместо этого выделите то, что нужно обновить, и обновите только это.Вы можете использовать otool с опцией -L для исполняемого файла, который покажет, где исполняемый файл ожидает, что эти библиотеки будут.
Если путь к ним нужно изменить, используйте команду install_name_tool , которая позволяет вам указать путь к библиотекам.
источник
Теперь, когда Xcode обновил свою IDE, они немного изменили то, как это работает.
Раньше его делили на отдельные секции, как показано выше, с «Встроенными двоичными файлами» и «Связанными фреймворками и библиотеками» в качестве отдельных секций.
Теперь это один комбинированный раздел с выпадающими меню справа о том, что должно быть встроено.
Сначала это смущало меня, но теперь имеет смысл.
источник
Я попал сюда, пытаясь запустить программу, которую я только что скомпилировал, используя CMake. Когда я пытаюсь запустить его, он жалуется, говоря:
Я обошел проблему, сказав CMake использовать статическую версию Boost вместо того, чтобы позволить ей использовать динамическую:
источник
Если вы используете Xcode 11 и выше:
Перейдите на
General
вкладку и добавьте фреймворк вFrameworks, Libraries, and Embedded Content
раздел.Важное замечание: по умолчанию оно может быть помечено как
Do Not Embed
, измените его так,Embed Without Signing
как показано на рисунке, и все готово.Для версий Xcode ниже 11:
Просто добавьте фреймворк в
Embedded Binaries
раздел и все готово.Ура!
источник
Чтобы устранить ошибку ниже на моем Macbook Catalina 10.15.4:
Я выполнил команду ниже и обошел проблему выше:
источник
Я исправил эту проблему с помощью
Product > Clean Build Folder
( CommandShiftK), что делает новую чистую сборку действительно странной.источник
Вы можете использовать
sudo install_name_tool -change
изменить путь dylib иsudo install_name_tool -id
изменить имя dylibисточник
Я исправляю это
brew install libpng
источник
Если вы используете cmake, добавьте
DYLIB_INSTALL_NAME_BASE "@rpath"
в целевые свойства:или в проекте динамической библиотеки XCode Target -> Build Setting set Динамическая библиотека установить имя базы в @rpath
источник
если вы используете virtualenv, просто удалите папку вашей среды и создайте ее заново с помощью этой команды
virtualenv --python=/usr/local/bin/python3 the_name_of_my_env
источник
Для тех, кто заходил на эту страницу, потому что они получили эту ошибку, пытаясь связать сторонний фреймворк со своим проектом с использованием Xcode 6.3.1, я столкнулся с проблемой, заключающейся в том, что библиотека создавалась со старой версией компилятора, использующего другую версию быстро. Единственный способ исправить это для меня - перестроить фреймворк.
Другая причина, по которой вы можете получить это, изложена в техническом документе Apple.
установите для встроенного содержимого, содержащего Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT), значение сборки в приложении YES
Вот ссылка на полный Apple документ, который объясняет это здесь
источник
Для моего фреймворка я использовал подпроект Xcode, добавленный как подмодуль git.
Я думаю, что я получил эту ошибку, потому что я подписывал фреймворк с другой командой подписи чем мое основное приложение. (переключил команды для приложения; забыл переключиться на фреймворк)
Решение заключается в том, чтобы не подписывать в рамках проекта. Вместо этого в разделе основного приложения
Target > General > Frameworks, Libraries, and Embedded Content
подпишите структуру черезEmbed & Sign
.Если я выберу
Do not Embed
илиEmbed Without Signing
я вместо этого получу ошибку:источник
Xcode 11.1 и Swift 5.1
Быстрая починка
Сначала убедитесь, что во внешней добавленной библиотеке есть опция embed, которая выбрана на вкладке General, Embbed Binaries.
Если все еще не работает ..
Это происходит потому, что у вас есть разные, не имеющие аналогов версии библиотек.
Обновите стручки
Важно: убедитесь, что все библиотеки включены в список параметров сборки -> библиотеки и фреймворки, и у вас есть возможность встроить их в сборку
Просто работает потрясающе
источник
Для тех, кто испытывает то же самое с другой библиотекой или пакетом, @ user3835452 находится на правильном пути. Я нашел это сообщение при попытке запустить
composer
:Перепробовав много разных способов, я просто побежал,
brew install openldap
и это исправило. Обратите внимание , что я уже бежалbrew update
и ,brew upgrade
но только после того, как я вручную установитьopenldap
это сделал на самом деле работы.источник
Я исправил это, переустановив Homebrew
Удалить
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
устанавливать
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
источник
Я просто использовал
brew upgrade <the tool>
. В моем случаеbrew upgrade tmux
.источник
Я столкнулся с проблемой сбоя приложения, цитируя ошибку SIGABRT в потоке. Обзор сбоя - библиотека dyld не загружена, и изображение не нашло что-то подобное.
Это было видно в Xcode 9.3. Причина, по которой я узнал, состояла в том, что XCode не собирает библиотеки динамически, поэтому мне пришлось сделать это вручную, что решило мою проблему сбоев.
Выполните следующие шаги:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
Теперь вы сможете увидеть некоторые быстрые библиотеки, выберите все быстрые библиотеки с расширением .dylib и нажмите «Открыть».
Они будут добавлены во встроенные двоичные файлы на вкладке «Общие» приложения.
Создайте новую группу в папке проекта и добавьте все эти библиотеки.
Теперь запустите ваше приложение.
источник
Если вы используете среду Conda в терминале, обновите samtools, чтобы решить ее.
источник
Лучший ответили выше, сначала проверьте, каков результат
otool -L
А затем сделайте следующее, если неверно
И
источник
это должно решить проблему
источник
Ничто из вышеперечисленного не сработало для меня, но сработало
brew reinstall icu4c
.источник
Для тех, кто все еще может иметь эту проблему:
Это постоянная проблема со стороны Apple, и для меня сработало обновление до ios 13.4 (бета). Установил, что и работал как шарм.
источник