“/ Usr / bin / ld: não é possível encontrar -lcudart”

12

Eu sou novato no Ubuntu e usando o Ubuntu 14.04 de 64 bits. Quero makeum projeto que use cudae opencvrecebi o seguinte erro ao executarcmake . && make

Linking CXX executable ground_estimation
/usr/bin/ld: cannot find -lcudart
collect2: error: ld returned 1 exit status
make[2]: *** [ground_estimation] Error 1
make[1]: *** [CMakeFiles/ground_estimation.dir/all] Error 2
make: *** [all] Error 2

Esta é a saída de ld -lcudart --verbose

attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart.a failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/local/lib64/libcudart.so failed
attempt to open //usr/local/lib64/libcudart.a failed
attempt to open //lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //lib64/libcudart.so failed
attempt to open //lib64/libcudart.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.so failed
attempt to open //usr/lib/x86_64-linux-gnu/libcudart.a failed
attempt to open //usr/lib64/libcudart.so failed
attempt to open //usr/lib64/libcudart.a failed
attempt to open //usr/local/lib/libcudart.so failed
attempt to open //usr/local/lib/libcudart.a failed
attempt to open //lib/libcudart.so failed
attempt to open //lib/libcudart.a failed
attempt to open //usr/lib/libcudart.so failed
attempt to open //usr/lib/libcudart.a failed

libcudartexiste /usr/local/cuda/lib64e também adicionei ao caminho da biblioteca:

echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:

Esta é a saída de ls /usr/local/cuda/lib64:

libcublas_device.a   libcufftw.so.6.0.37    libnppi.so.6.0
libcublas.so         libcuinj64.so          libnppi.so.6.0.37
libcublas.so.6.0     libcuinj64.so.6.0      libnpps.so
libcublas.so.6.0.37  libcuinj64.so.6.0.37   libnpps.so.6.0
libcudadevrt.a       libcurand.so           libnpps.so.6.0.37
libcudart.so         libcurand.so.6.0       libnvblas.so
libcudart.so.6.0     libcurand.so.6.0.37    libnvblas.so.6.0
libcudart.so.6.0.37  libcusparse.so         libnvblas.so.6.0.37
libcudart_static.a   libcusparse.so.6.0     libnvToolsExt.so
libcufft.so          libcusparse.so.6.0.37  libnvToolsExt.so.1
libcufft.so.6.0      libnppc.so             libnvToolsExt.so.1.0.0
libcufft.so.6.0.37   libnppc.so.6.0         libOpenCL.so
libcufftw.so         libnppc.so.6.0.37      libOpenCL.so.1
libcufftw.so.6.0     libnppi.so

O que devo fazer essa ldpesquisa no /usr/local/cuda/lib64caminho para encontrar libcudart?

Arash
fonte
você pode por favor ls /usr/local/cuda/lib64?
AlexGreg #
A mesma pergunta aconteceu comigo também. Referência do artigo: [Debian compilando exemplos de OpenCV com IPP: / usr / bin / ld: não pode encontrar -llibsvml.so collect2: error: ld retornou 1 status de saída.] [1] [1]: stackoverflow.com/questions/ 24234961 /…
hellomzhxlp 15/11

Respostas:

20

Faça um link simbólico para libcudaonde ldestá pesquisando.

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
AlexGreg
fonte
11

LD_LIBRARY_PATHé usado para modificar o comportamento das ldconfigferramentas relacionadas e ao procurar as bibliotecas, no tempo de execução.

A ldferramenta vinculador não usa essa variável. Se você quiser usar uma biblioteca localizada em um diretório não padrão, precisará usar o -Lparâmetro do comando, como este:

ld -lcuda -L/usr/local/cuda/lib64

Se você fez o download de um projeto existente e não sabe como modificar os Makefile (s) existentes sem interromper toda a compilação, execute o make da seguinte maneira:

export LDFLAGS=-L/usr/local/cuda/lib64
make

A variável LDFLAGS (que também pode ser definida no Makefile) é usada para passar argumentos específicos para o vinculador ( ld) quando iniciada pelas instruções da compilação.

Benoit
fonte
1
Eu cheguei ld: warning: cannot find entry symbol _start; not setting start addressquando corri #ld -lcuda -L/usr/local/cuda/lib64
1212 Arash
@Arash: você instalou a versão da libcuda solicitada pelo projeto que você tenta compilar?
Benoit
mesmo problema que @Arash e sim eu tenho a versão correta do libcuda
Mohsin Bukhari
2

Você pode criar links em vez de adicionar os caminhos:

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
caos
fonte
Eu não tenho / usr / local / lib64 /, tenho / usr / local / lib / #
Arash
1

Eu consertei isso! Vá para o seu makefile e altere

/usr/local/cuda/

para

/usr/local/cuda-7.0

(se é isso que você tem)

Funcionou para mim

Antony Savvidi
fonte
0

Resolvido

git clone https://github.com/inducer/pycuda.git
cd pycuda
sudo configure --cuda-root=/usr/lib/cuda-10.1

sudo ln -s /usr/lib/cuda-10.1/targets/x86_64-linux/include src/cpp/

OU copie todos os arquivos de cabeçalho de /usr/lib/cuda-10.1/targets/x86_64-linux/include em / src / cpp /

Funcionou para mim no Pop-OS 19.10

Ghanshyam Chandra
fonte