dyld: библиотека не загружена, причина: изображение не найдено
Я использовал GDB нормально до этой недели. Сейчас работает GDB я вижу:
(gdb) r
Starting program: /Volumes/MyProg
dyld: Library not loaded: @rpath/libCore.so
Referenced from: /Volumes/MyProg
Reason: image not found
(gdb)
Как это исправить?
Я имею:
- OSX 10.9
- GNU GDB (GDB) 7,6 установлен с MacPorts
PS
Я переустановил GDB и XCode. Это не помогает.
Я вижу много вопросов о проблемах с dyld, но, очевидно, мне не хватает опыта работы с библиотеками на OSX, и они кажутся мне бесполезными.
Например, эта тема: dyld выдает библиотеку, не загруженную. Но как снова загрузить библиотеку?
Или эта тема: Dyld: Библиотека не загружена. Но как узнать имя установки? Что такое @rpath
?
4 ответа
Как я это исправил:
libCore.so
библиотека из фреймворка ROOT, котораяMyProg
использует.- Если я правильно понимаю, сообщение
Library not loaded: @rpath/libCore.so Referenced from: /Volumes/MyProg Reason: image not found
означает, что компоновщик нашел библиотеку, но не может ее использовать. - Root, при установке используется clang по умолчанию. Между тем, как я предпочитаю GCC и
MyProg
использует gcc. Я переустановил root с помощью компилятора gcc:
./configure --with-cxx = g ++ --with-cc = gcc --with-ld = g ++
Я перекомпилировал
MyProg
,
и теперь я могу отладить его с помощью GDB.
Я решил эту проблему с помощью "Embedded Binaries" в общих настройках проекта.
Я решил эту проблему, изменив следующие настройки
Перейдите в Project Setting Your_Target->General->Embedded Binaries-> Нажмите на кнопку + и добавьте свою библиотеку сюда
Для Xcode 11 или выше есть другое более простое решение, которое сработало для меня, если вы используете Cocoapods.
В свой Podfile добавьте use_frameworks! после вашей целевой строки вот так -
target 'YourAppName' do
use_frameworks!
По сути, он добавляет все ваши модули в качестве фреймворка в папку фреймворка.