“/ usr / bin / ld : -lcudart를 찾을 수 없습니다”


13

나는 우분투 초보자이며 우분투 14.04 64 비트를 사용하고 있습니다. 내가 원하는 make사용하는 프로젝트 cudaopencv실행할 때 나는 다음과 같은 오류가 발생했습니다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/lib64libcudart


당신은 제발 할 수 ls /usr/local/cuda/lib64있습니까?
AlexGreg

나에게도 같은 질문이 일어났다. [IPP로 OpenCV 예제를 컴파일하는 데비안 컴파일 : / usr / bin / ld : -llibsvml.so collect2를 찾을 수 없음 : 오류 : ld에서 1 개의 종료 상태를 반환했습니다.] [1] [1] : stackoverflow.com/questions/ 24234961 /…
hellomzhxlp 2

답변:


22

검색 libcuda위치에 대한 심볼릭 링크를 만듭니다 ld.

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

11

LD_LIBRARY_PATHldconfig실행 시간에 라이브러리를 찾을 때 및 관련 도구 의 동작을 수정하는 데 사용됩니다 .

ld링커 도구는이 변수를 사용하지 않습니다. 비표준 디렉토리에있는 라이브러리를 사용하려면 -L다음과 같이 명령 매개 변수 를 사용해야합니다 .

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

기존 프로젝트를 다운로드하여 다운로드했지만 전체 컴파일을 중단하지 않고 기존 Makefile을 수정하는 방법을 모르는 경우 다음과 같은 방법으로 make 를 실행할 있습니다 .

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

LDFLAGS 변수 (Makefile에 정의 될 수도 있음 ld)는 컴파일 인수에 의해 시작될 때 링커 ( )에 특정 인수를 전달하는 데 사용됩니다 .


1
나는 ld: warning: cannot find entry symbol _start; not setting start address달릴 때ld -lcuda -L/usr/local/cuda/lib64
Arash

@ Arash : 컴파일하려는 porject이 요청한 libcuda 버전을 설치 했습니까?
Benoit

같은 @Arash 등의 문제 그리고 예 나는 libcuda의 올바른 버전이
Mohsin 카리

2

경로를 추가하는 대신 링크를 만들 수 있습니다.

ln -s /usr/local/cuda/lib64/libcudart.so /usr/local/lib/
ln -s /usr/local/cuda/lib64/libcudart.a /usr/local/lib/

나는 / usr / local / lib64 /가없고, / usr / local / lib /가있다
Arash

1

나는 이것을 고쳤다! 메이크 파일로 이동하여 변경

/usr/local/cuda/

/usr/local/cuda-7.0

(만약 당신이 가진 것이라면)

그것은 나를 위해 일했다


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에서 나를 위해 일했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.