"/usr/bin/ld: cannot find -lcudart"
Solution 1
Make a symbolic link to libcuda
where ld
is searching it.
sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
Solution 2
LD_LIBRARY_PATH
is used to modify the behaviour of the ldconfig
and related tools when looking for the libraries, at execution time.
The ld
linker tool doesn't use this variable. If you want to use a library located in a non-standard directory, you have to use the -L
parameter of the command, like this :
ld -lcuda -L/usr/local/cuda/lib64
If you have downloaded and existing project and doesn't know how to modify the existing Makefile(s) without breaking the whole compilation, you can run make the following way :
export LDFLAGS=-L/usr/local/cuda/lib64
make
The variable LDFLAGS (which may be also defined into the Makefile), is used to pass specific arguments to the linker (ld
) when launched by the compilation intructions.
Solution 3
You can make links instead of adding the paths:
ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
Solution 4
I fixed this! Go to your makefile and change
/usr/local/cuda/
to
/usr/local/cuda-7.0
(if that's what you got)
It worked for me
Related videos on Youtube
Arash
Updated on September 18, 2022Comments
-
Arash over 1 year
I am newbie to Ubuntu and using Ubuntu 14.04 64-bit. I want to
make
a project that usescuda
andopencv
I got the following error when runningcmake . && 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
This is the output of
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
libcudart
exist in/usr/local/cuda/lib64
and I also added to Library Path:echo $LD_LIBRARY_PATH /usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
This is the output of
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
What should I do that
ld
search in/usr/local/cuda/lib64
path to findlibcudart
?-
AlexGreg over 9 yearscan you please
ls /usr/local/cuda/lib64
? -
hellomzhxlp over 9 yearsThe same question happened to me too. Reference from the article: [Debian compiling OpenCV examples with IPP: /usr/bin/ld: cannot find -llibsvml.so collect2: error: ld returned 1 exit status.][1] [1]: stackoverflow.com/questions/24234961/…
-
-
Arash over 9 yearsI got
ld: warning: cannot find entry symbol _start; not setting start address
when runld -lcuda -L/usr/local/cuda/lib64
-
Benoit over 9 years@Arash: did you install the version of libcuda requested by the porject you try to compile ?
-
Mohsin Bukhari about 5 yearssame problem as @Arash and yes I have the correct version of libcuda
-
WolfLink about 2 yearsIs there a way to symlink the whole /lib folder without symlinking every individual file?