2013-12-08 7 views
25

Я использовал gdb обычно до этой недели. Сейчас работает gdb, я вижу:dyld: библиотека не загружена, Причина: изображение не найдено

(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
  • ГНУ GDB (GDB) 7.6 установлен с MacPorts

P.S.

Я переустановил gdb и Xcode. Это не помогает.

Я вижу много вопросов о проблемах с dyld, но, очевидно, мне не хватает опыта работы с библиотеками OSX, и они кажутся мне бесполезными.

Например: dyld issues library not loaded Но как загрузить библиотеку еще раз?

or this topic: Dyld: Library not loaded Но как узнать имя для установки? Что такое @rpath?

ответ

6

Как я установил его:

  1. libCore.so библиотека из ROOT framework, которые MyProg использования.
  2. Если я правильно понял, сообщение Library not loaded: @rpath/libCore.so Referenced from: /Volumes/MyProg Reason: image not found означает, что компоновщик нашел библиотеку, но не может ее использовать.
  3. Root, во время установки использует clang по умолчанию. Между тем, как я предпочитаю, gcc и MyProg использует gcc.
  4. Я заново корень с компилятором GCC:

    ./configure --with-CXX = G ++ --with-CC = GCC --with-LD = G ++

  5. Я перекомпилированы MyProg.

и теперь я могу отладить его с помощью gdb.

1

Вы можете найти более подробную информацию о RPATH здесь: link

Таким образом, вы должны указать путь к libCore.so, но если честно, я не столкнулся с этой библиотекой, так что я не знаю, где она находится ,

Вы можете также проверить этот ответ, чтобы понять, что это такое RPATH: answer

+0

Я видел эту ссылку. Но похоже, что он описывает что-то для разработчиков XCode, и я очень скучаю по основам. Ссылка не отвечает на вопрос, как найти значение @rpath ... Я вижу, что могу найти значение в некоторых окнах с именем Target Info, но я не знаю, как найти эти окна ..... – klm123

+0

У меня есть добавлена ​​новая ссылка в ответ, может быть, она будет полезна для вас. Пожалуйста, проверьте ответ. –

+0

я вижу ... спасибо. – klm123

28

Я решил эту проблему с помощью «Встроенных бинарников» в общих настройках проекта.

+0

решил это ... thx !!! – Georg

+0

да, это с Карфагеном. Инструкции Carthage (по состоянию на 5/23/2015) состоят в добавлении в связанные библиотеки, но я удалил их и добавил их через встроенные двоичные файлы. Затем он (сам по себе) появился в связанных библиотеках. Теперь все работает. –

9

я решил эту проблему, изменив следующие настройки

Перейти к проекту Настройка Your_Target-> Общие-> Embedded Binaries-> Нажмите на кнопку + и добавить вашу библиотеку здесь

+0

Это сработало для меня ... – commando24

Смежные вопросы