나는 우분투 초보자이며 우분투 14.04 64 비트를 사용하고 있습니다. 내가 원하는 make
사용하는 프로젝트 cuda
및 opencv
실행할 때 나는 다음과 같은 오류가 발생했습니다cmake . && 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
이것은 출력입니다 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
에 /usr/local/cuda/lib64
있으며 라이브러리 경로에 추가했습니다.
echo $LD_LIBRARY_PATH
/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:
이 결과는 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
경로에서 ld
검색하려면 어떻게해야 합니까?/usr/local/cuda/lib64
libcudart
답변
검색 libcuda
위치에 대한 심볼릭 링크를 만듭니다 ld
.
sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so
답변
LD_LIBRARY_PATH
ldconfig
실행 시간에 라이브러리를 찾을 때 및 관련 도구 의 동작을 수정하는 데 사용됩니다 .
ld
링커 도구는이 변수를 사용하지 않습니다. 비표준 디렉토리에있는 라이브러리를 사용하려면 -L
다음과 같이 명령 매개 변수 를 사용해야합니다 .
ld -lcuda -L/usr/local/cuda/lib64
기존 프로젝트를 다운로드하여 다운로드했지만 전체 컴파일을 중단하지 않고 기존 Makefile을 수정하는 방법을 모르는 경우 다음과 같은 방법으로 make 를 실행할 수 있습니다 .
export LDFLAGS=-L/usr/local/cuda/lib64
make
LDFLAGS 변수 (Makefile에 정의 될 수도 있음 ld
)는 컴파일 인수에 의해 시작될 때 링커 ( )에 특정 인수를 전달하는 데 사용됩니다 .
답변
경로를 추가하는 대신 링크를 만들 수 있습니다.
ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/
답변
나는 이것을 고쳤다! 메이크 파일로 이동하여 변경
/usr/local/cuda/
에
/usr/local/cuda-7.0
(만약 당신이 가진 것이라면)
그것은 나를 위해 일했다
답변
해결
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/
또는 /usr/lib/cuda-10.1/targets/x86_64-linux/include의 모든 헤더 파일을 / src / cpp /에 복사하십시오.
그것은 Pop-OS 19.10에서 나를 위해 일했습니다.