2015-06-05 20 views
6

Tôi đang cố gắng cài đặt CUDA 7.0 trên Ubuntu 14.04. Tôi đã làm theo hướng dẫn cài đặt như đã nêu here. bước Cụ thể, tôi đã theo dõi phần 3.6 và Chương 6. Trong khi biên soạn các ví dụ (Mục 6.2.2.2) sử dụng make, tôi nhận được lỗi sau:CUDA 7.0 Lỗi khi biên dịch mẫu

make[1]: Entering directory `/usr/local/cuda-7.0/samples/3_Imaging/cudaDecodeGL' 
/usr/local/cuda-7.0/bin/nvcc -ccbin g++ -m64  -gencode arch=compute_20, 
code=compute_20 -o cudaDecodeGL FrameQueue.o ImageGL.o VideoDecoder.o 
VideoParser.o VideoSource.o cudaModuleMgr.o cudaProcessFrame.o 
videoDecodeGL.o -L../../common/lib/linux/x86_64 -L/usr/lib/"nvidia-346" 
-lGL -lGLU -lX11 -lXi -lXmu -lglut -lGLEW -lcuda -lcudart -lnvcuvid 
/usr/bin/ld: cannot find -lnvcuvid 
collect2: error: ld returned 1 exit status 
make[1]: *** [cudaDecodeGL] Error 1 
make[1]: Leaving directory `/usr/local/cuda-7.0/samples/3_Imaging/cudaDecodeGL' 
make: *** [3_Imaging/cudaDecodeGL/Makefile.ph_build] Error 2 
+1

Thực tế là các thư viện bổ sung cần thiết để xây dựng một số mẫu được đề cập trong phần 6.3.1.Đối với ubuntu, hãy thử: 'sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev' Và bạn có thể chạy vào các mẫu khác (chẳng hạn như simpleMPI) yêu cầu các thành phần khác. Nếu bạn không quan tâm đến những mẫu cụ thể này, bạn có thể thực hiện 'make -k' để tiếp tục quá trình xây dựng mẫu, bỏ qua một cách hiệu quả những cái không xây dựng. –

+2

Rất tiếc, nội dung trên không liên quan đến vấn đề của bạn. libnvcuvid.so nên được cài đặt bởi trình điều khiển ở đâu đó trong '/ usr/lib' Có vẻ như cài đặt trình quản lý gói bạn đã sử dụng chưa đặt nó ở nơi Makefile này đang mong tìm thấy nó trong'/usr/lib/'nvidia-346 "' Điều này sẽ không dễ dàng để sửa chữa. Nếu bạn không quan tâm đến mẫu này, bạn vẫn có thể sử dụng 'make -k'. Nếu không, tôi sẽ đề nghị bắt đầu lại với một tải sạch ubuntu và sử dụng phương pháp cài đặt runfile. Có thể bạn đã không sử dụng đúng repo cho ubuntu 14.04 trong phương pháp cài đặt trình quản lý gói. –

+0

Cảm ơn bạn đã trả lời, @RobertCrovella. Tôi tìm thấy libnvcuvid.so trong '/ usr/lib/nvdia-331'. Cần làm gì bây giờ? Nếu ở tất cả, tôi phải cài đặt thông qua phương pháp cài đặt runfile, sau đó làm thế nào để gỡ bỏ cài đặt tất cả các thành phần của Cuda đã được cài đặt thông qua phương pháp cài đặt quản lý gói? Ngoài ra, tôi có cần gỡ cài đặt chúng không? – Pras

Trả lời

9

Nếu bạn nhận thấy, có -L/usr/lib/"nvidia-346". Trong trường hợp của tôi, tôi đã cài đặt nvidia-349. Những gì làm việc cho tôi là chỉnh sửa NVIDIA_CUDA-7.0_Samples/3_Imaging/cudaDecodeGL/findgllib.mk và thay đổi UBUNTU_PKG_NAME = "nvidia-346" thành nvidia-349.

+1

Nhưng điều đó sẽ không hoạt động trong trường hợp của OP, nơi gói tìm thấy là 'nvidia-331'. Điều đó không tương thích với CUDA 7. –

+2

Điều tôi muốn nói là trong ví dụ CUDA này, số phiên bản được mã hóa cứng trong tệp .mk và cần được thay đổi theo cài đặt hiện tại. – andoum

+0

Nhưng ngay cả khi nó đã được thay đổi để phù hợp với cài đặt hiện tại của OP, (tức là 'nvidia-331') ** nó sẽ không hoạt động **. 'nvidia-331' không tương thích với CUDA 7. Vì vậy, câu trả lời của bạn không thể được sử dụng để giải quyết vấn đề của OP. Vì vậy, việc cài đặt phải được sửa. Và với một cài đặt thích hợp/cố định, bạn không cần phải sửa đổi các tệp .mk được mã hóa cứng. –

2

Để cài đặt đúng CUDA 7.0 trên Ubuntu 14.04, bạn cần có phiên bản trình điều khiển nvidia 346 trở lên.

Nếu bạn đang sử dụng phương pháp cài đặt .deb, trình điều khiển đồ họa nvidia được cài đặt tự động.

Nếu bạn sử dụng phương pháp cài đặt tập tin .run và quyết định không để cài đặt driver nvidia, bạn có thể tự cài đặt trình điều khiển sau đó thông qua việc quản lý gói:

sudo apt-add-repository ppa:xorg-edgers/ppa && sudo apt-get update 

    sudo apt-get install nvidia-346 nvidia-346-dev nvidia-346-uvm libcuda1-346 nvidia-libopencl1-346 nvidia-icd-346 

Trong trường hợp của tôi, tôi đã cài đặt nvidia-352 sau đó do lỗi trong nvidia-346 và tôi tình cờ gặp lỗi tương tự.

phương pháp tiếp cận của quoum theo cách thủ công thay đổi mã hoá cứng UBUNTU_PKG_NAME = "nvidia-346" thành UBUNTU_PKG_NAME = "nvidia-352" trong NVIDIA_CUDA-7.0_Samples/3_Imaging/cudaDecodeGL/findgllib.mk làm việc tốt cho tôi.

2

tôi gặp cùng một vấn đề và giải pháp là con đường đưa của nvidia vào đường dẫn hệ thống:

sudo gedit /etc/environment 

thêm các đường dẫn vào môi trường

LIBRARY_PATH=/usr/lib/your_nvidia_edition:$LIBRARY_PATH

0

Trong thực tế, tôi đã gặp phải vấn đề này khi tôi đã thực hiện một công việc. Tôi đã cài đặt Cuda 8.0 theo Ubuntu 16.04 của tôi. Vấn đề này đã gây nhầm lẫn cho tôi trong vài tuần và tôi đã gần như có xu hướng cài đặt lại ubuntu cho điều đó sau khi xem xét nhiều đề xuất qua google, nhưng cuối cùng tôi đã tự giải quyết nó gần đây.

Trước hết, bạn nên thay thế tất cả UBUNTU_PKG_NAME = ## nvidia-3xx ## thành phiên bản trình điều khiển nvidia thực sự được cài đặt như được đề xuất ở trên. Sau đó, bạn có thể sẽ nhận được biên dịch lỗi sau khi bạn thực hiện một make mới. Trong trường hợp của tôi, tôi có các lỗi liên kết như

/usr/bin/ld: warning: libGLX.so.0, needed by /usr/lib/nvidia- 
375/libGL.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libGLdispatch.so.0, needed by /usr/lib/nvidia- 
375/libGL.so, not found (try using -rpath or -rpath-link) 
.... 

hoặc bất kỳ điều gì có chứa lỗi liên kết bị thiếu. Đừng xác định vị trí các tập tin bạn bỏ lỡ như

$ locate libGLX.so. 
    /usr/lib/nvidia-375/libGLX.so.0 
    /usr/lib32/nvidia-375/libGLX.so.0 
$ locate libGLdispatch.so.0 
    /usr/lib/nvidia-375/libGLdispatch.so.0 
    /usr/lib32/nvidia-375/libGLdispatch.so.0 

Lỗi trên có thể do các file biên dịch không thể tìm thấy trong các thư viện CUDA mặc định khi bạn thiết lập, vì vậy bạn chỉ cần copy những file đã mất để /usr/lib/nvidia-3xx/ (đường dẫn thực tế trong trường hợp của bạn) và điều này sẽ hoạt động (nó hoạt động trong trường hợp của tôi), nếu không, bạn có thể thử liên kết tệp mới mới với tệp cần sử dụng

$ sudo ln -s (requested file) (requesting file). 

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan