2013-12-08 8 views
25

Użyłem gdb normalnie do tego tygodnia. Teraz działa gdb Widzę:dyld: Biblioteka nie załadowana, Powód: obraz nie został znaleziony

(gdb) r 
Starting program: /Volumes/MyProg 
dyld: Library not loaded: @rpath/libCore.so 
    Referenced from: /Volumes/MyProg 
    Reason: image not found 
(gdb) 

Jak to naprawić?

mam:

  • OS X 10,9
  • GNU gdb (gdb) 7.6 zainstalowany DarwinPorts

P.S.

Mam ponownie zainstalowane gdb i Xcode. To nie pomaga.

Widzę wiele pytań na temat kwestii dyld, ale oczywiście brakuje mi doświadczenia z bibliotekami na OSX i wydają mi się one bezużyteczne.

Na przykład ten temat: dyld issues library not loaded Ale jak ponownie pobrać bibliotekę?

Lub ten temat: Dyld: Library not loaded Ale jak znaleźć nazwę instalacji? Co to jest @rpath?

Odpowiedz

6

Jak naprawiłem go:

  1. libCore.so jest biblioteką z ROOT framework, co MyProg zastosowań.
  2. Jeśli dobrze rozumiem, komunikat Library not loaded: @rpath/libCore.so Referenced from: /Volumes/MyProg Reason: image not found oznacza, że ​​linker znalazł bibliotekę, ale nie może jej użyć.
  3. Główny, podczas instalacji używa domyślnie klang. Tymczasem jak wolę gcc i MyProg używa gcc.
  4. I ponownie zainstalowane korzeń gcc kompilator:

    ./configure -with-CXX = g ++ -with CC = gcc -with-LD = g ++

  5. I zrekompilowane MyProg.

i teraz mogę debugować go za pomocą gdb.

1

można znaleźć więcej informacji o rPath tutaj: link

więc trzeba wskazać ścieżkę do libCore.so, ale szczerze mówiąc, nie wychodził z tej biblioteki, więc nie wiem, gdzie się znajduje .

Można sprawdzić również tę odpowiedź, aby zrozumieć, co to jest rpath: answer

+0

Widziałem ten link. Ale wydaje mi się, że opisują coś dla programistów XCode i brakuje mi podstaw. Link nie odpowiada na pytanie, jak znaleźć wartość @rpath ... Widzę, że mogę znaleźć wartość w niektórych oknach o nazwie Target Info, ale nie mam pojęcia, jak znaleźć te okna ..... – klm123

+0

Mam dodany nowy link w odpowiedzi może ci się przyda. Sprawdź odpowiedź. –

+0

Widzę ... dziękuję. Czy ta pomocna odpowiedź to – klm123

28

Rozwiązałem ten problem za pomocą "Osadzonych plików binarnych" w ogólnych ustawieniach projektu.

+0

rozwiązałem ... thx !!! – Georg

+0

Tak, to działało z Kartaginą. Instrukcje do Kartaginy (stan na 31.03.2015) dodają do bibliotek połączonych - ale usunąłem to i dodałem je za pomocą wbudowanych plików binarnych. Następnie (samodzielnie) pojawił się w połączonych bibliotekach. Teraz wszystko działa. –

9

mam rozwiązać ten problem poprzez zmianę następujących ustawień

Przejść do projektu Ustawienie Your_Target-> General-> Do wbudowania Binaries-> Kliknij przycisk + i dodać swoją bibliotekę tutaj

+0

To zadziałało dla mnie ... – commando24