2013-06-13 13 views
6

Quando compilo il file .cu con nvcc 5.0, il compilatore mi fornisce le seguenti informazioni.ignorando libcudart.so durante la ricerca di -lcudart

/usr/bin/ld: saltare /usr/local/cuda-5.0/lib/libcudart.so incompatibili durante la ricerca di -lcudart

Sembra sia un avvertimento o un errore. Non so quale sia il problema.

C'è qualcuno che conosce più dettagli su queste informazioni?

+0

Stai cercando di compilare un codice a 64 bit? In tal caso, è necessario collegarsi alla versione a 64 bit che deve trovarsi in '/ usr/local/cuda-5.0/lib64/libcartart.so'. – BenC

risposta

10

Questo avviso si verifica spesso quando si tenta di collegare un codice a 64 bit con una libreria a 32 bit, vedere questa domanda: Skipping Incompatible Libraries at compile.

bisogna distinguere i file di libreria 2:

  • $CUDA_HOME/lib/libcudart.so, la versione a 32 bit della biblioteca cudart.
  • $CUDA_HOME/lib64/libcudart.so, la versione a 64 bit della libreria cudart.

(nel tuo caso, $CUDA_HOME è /usr/local/cuda-5.0)

In sostanza, il linker trova la libreria a 32 bit prima (-L opzioni vengono ricercati in ordine) e restituisce tale avvertimento, anche se finisce per trovare il giusto biblioteca.

probabilmente è necessario aggiungere $CUDA_HOME/lib64 alla variabile d'ambiente LD_LIBRARY_PATH prima $CUDA_HOME/lib in modo che ld può trovare la libreria corretta per la propria architettura a 64 bit prima che la versione a 32 bit.

+1

Grazie. Il mio sistema operativo operativo è 64-bit, quindi tutto il mio codice sarà compilato e collegato a 64-bit. Sembra strano che il CUDA5.0 a 64 bit includa librerie a 32 bit. – konjac

+1

Su un sistema operativo a 64 bit, è anche possibile creare ed eseguire applicazioni a 32 bit, quindi è necessario il 'libcudart.so' a 32 bit per questo. – BenC

+1

Mi sembra di avere esattamente lo stesso problema. Il mio 'LD_LIBRARY_PATH' ha' lib64' prima di 'lib', quindi non sembra funzionare sul mio sistema. Qualche idea? –

Problemi correlati