Пытаясь «создать» CUDA SDK, ld не может найти библиотеку, ldconfig говорит, что может - PullRequest
10 голосов
/ 26 апреля 2010

Я знаю, что есть много других вопросов, похожих на этот, но ни одно из предложенных там решений не работает для меня

По сути, создавая файлы примеров SDK, я получаю /usr/bin/ld: cannot find -lcuda , что было бы достаточно просто "найти библиотеку и выбросить ее в ldconfig", за исключением того, что ldconfig уже говорит, что она имеет ...

$ sudo ldconfig -v | grep cuda
/usr/local/cuda/lib64:
    libcudartemu.so.3 -> libcudartemu.so.3.0.14
    libcudart.so.3 -> libcudart.so.3.0.14
/usr/local/cuda/lib:
    libcudartemu.so.3 -> libcudartemu.so.3.0.14
    libcudart.so.3 -> libcudart.so.3.0.14
    libcuda.so.1 -> libcuda.so.195.36.15
    libcuda.so.1 -> libcuda.so.195.36.15
    libicudata.so.42 -> libicudata.so.42.1

И я проверил, есть символическая ссылка libcuda.so -> libcuda.so.1, но я все еще не понимаю, почему libcuda.so -> ... не отображается

Я, должно быть, упускаю что-то действительно очевидное. Есть идеи?

Ответы [ 3 ]

7 голосов
/ 26 апреля 2010

ldconfig имеет дело только с библиотеками времени выполнения, тогда как ld имеет дело с библиотеками времени сборки. В зависимости от того, как вы установили библиотеки CUDA, вам может потребоваться установить дополнительный пакет для символической ссылки, используемой во время сборки, или вам может потребоваться передать параметр -L в gcc или ld, чтобы указать, где находится символическая ссылка во время сборки есть.

7 голосов
/ 24 марта 2011

Добавить в .bash_profile

export PATH=/usr/local/cuda/bin:$PATH
export LPATH=/usr/lib/nvidia-current:$LPATH
export LIBRARY_PATH=/usr/lib/nvidia-current:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/nvidia-current:/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH

и исходный файл .bash_profile

1 голос
/ 26 апреля 2010

Попробуйте добавить -L / usr / local / cuda / lib перед -lcuda в командной строке компилятора / компоновщика.

...