Jestem nowicjuszem w Ubuntu i używam Ubuntu 14.04 64-bit. Chcę make
projekt, który używa cuda
i opencv
dostałem następujący błąd podczas uruchamianiacmake . && 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
To jest wynik działania 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
istnieją /usr/local/cuda/lib64
i dodałem również do ścieżki biblioteki:
echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
To jest wynik 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
Co powinienem zrobić, ld
szukając /usr/local/cuda/lib64
ścieżki, aby znaleźć libcudart
?
ls /usr/local/cuda/lib64
?Odpowiedzi:
Utwórz symboliczny link do miejsca, w
libcuda
którymld
je wyszukuje.źródło
LD_LIBRARY_PATH
służy do modyfikowania zachowanialdconfig
powiązanych narzędzi podczas wyszukiwania bibliotek w czasie wykonywania.ld
Narzędzie Łącznik nie używa tej zmiennej. Jeśli chcesz użyć biblioteki znajdującej się w niestandardowym katalogu, musisz użyć-L
parametru polecenia, jak poniżej:Jeżeli po pobraniu i istniejącego projektu i nie wie jak zmodyfikować istniejący Makefile (y) bez rozbijania całą kompilację można uruchomić zrobić w następujący sposób:
Zmienna LDFLAGS (która może być również zdefiniowana w pliku Makefile) służy do przekazywania określonych argumentów do linkera (
ld
) po uruchomieniu przez kompilację.źródło
ld: warning: cannot find entry symbol _start; not setting start address
kiedyld -lcuda -L/usr/local/cuda/lib64
Możesz tworzyć linki zamiast dodawać ścieżki:
źródło
Naprawiłem to! Przejdź do swojego makefile i zmień
do
(jeśli to masz)
To zadziałało dla mnie
źródło
Rozwiązany
LUB skopiuj wszystkie pliki nagłówkowe z /usr/lib/cuda-10.1/targets/x86_64-linux/include do / src / cpp /
Działa dla mnie w Pop-OS 19.10
źródło