2013-12-08 7 views
25

Ho usato gdb normalmente fino a questa settimana. Ora eseguo gdb Vedo:dyld: libreria non caricata, motivo: immagine non trovata

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

Come risolvere il problema?

ho:

  • OSX 10.9
  • GNU gdb (GDB) 7.6 installato con MacPorts

P.S.

Ho reinstallato gdb e Xcode. Questo non aiuta.

Vedo un sacco di domande sui problemi di dyld, ma ovviamente mi manca l'esperienza con le librerie su OSX e sembrano essere inutili per me.

Ad esempio questo argomento: dyld issues library not loaded Ma come scaricare nuovamente la libreria?

O questo argomento: Dyld: Library not loaded Ma come trovare il nome di installazione? Che cos'è @rpath?

risposta

6

Come ho riparato:

  1. libCore.so è una libreria da ROOT framework, che MyProg usi.
  2. Se ho capito bene, il messaggio Library not loaded: @rpath/libCore.so Referenced from: /Volumes/MyProg Reason: image not found significa che il linker ha trovato la libreria, ma non può usarla.
  3. Root, durante l'installazione utilizza clang per impostazione predefinita. Nel frattempo come preferisco gcc e MyProg utilizza gcc.
  4. Ho reinstallato radicolare con compilatore gcc:

    ./configure --with-cxx = g ++ --with-cc = gcc with-ld = g ++

  5. ho ricompilato MyProg.

e ora posso eseguire il debug con gdb.

1

Potete trovare ulteriori informazioni su rpath qui: link

quindi è necessario indicare il percorso del libCore.so, ma onestamente non ho di fronte a questa libreria in modo da non so dove sta trova .

È possibile controllare anche questa risposta per capire di cosa si tratta rpath: answer

+0

ho visto questo link. Ma sembra che descriva qualcosa per gli sviluppatori XCode e mi mancano molto le basi. Il link non risponde alla domanda come trovare il valore di @rpath ... Vedo che posso trovare valore in alcune finestre denominate Target Info, ma non ho idea di come trovare queste finestre ..... – klm123

+0

Ho aggiunto un nuovo link in risposta forse sarà utile per te. Si prega di controllare la risposta. –

+0

vedo ... grazie. – klm123

28

Ho risolto questo problema con "Binari incorporati" nelle impostazioni generali del progetto.

+0

risolto ... thx !!! – Georg

+0

sì, questo ha funzionato con Cartagine. Lo stato delle istruzioni di Cartagine (dal 5/23/2015) si aggiunge alle librerie collegate, ma l'ho eliminato e aggiunto tramite i binari incorporati. Quindi (da solo) è apparso nelle librerie collegate. Ora tutto funziona. –

9

ho risolto questo problema modificando le impostazioni seguenti

Vai al progetto Impostazione Your_Target-> Generale-> Embedded Binaries-> Fare clic sul pulsante + e aggiungere la libreria qui

+0

Questo ha funzionato per me ... – commando24