2013-06-13 167 views
6

當我用nvcc 5.0編譯.cu文件時,編譯器給我提供以下信息。在搜索-lcudart時跳過不兼容的libcudart.so

在/ usr/bin中/ LD:用於-lcudart

看來警告或錯誤搜索時跳過不兼容/usr/local/cuda-5.0/lib/libcudart.so。我不知道什麼是問題。

有沒有人知道有關此信息的更多詳細信息?

+0

你想編譯一個64位代碼嗎?如果是這樣,您需要鏈接到必須位於'/ usr/local/cuda-5.0/lib64/libcudart.so'中的64位版本。 – BenC

回答

10

當試圖將64位代碼鏈接到32位庫時,通常會發生此警告,請參閱此問題:Skipping Incompatible Libraries at compile

您需要區分2庫文件:

  • $CUDA_HOME/lib/libcudart.socudart庫的32位版本。
  • $CUDA_HOME/lib64/libcudart.so,64位版本的cudart庫。

(在你的情況,$CUDA_HOME/usr/local/cuda-5.0

基本上,鏈接器首先找到的32位庫(-L選項按順序搜索),並返回甚至警告,如果它最終找到適當的圖書館。

你可能需要$CUDA_HOME/lib之前添加$CUDA_HOME/lib64LD_LIBRARY_PATH環境變量,以便ld可以在32位版本之前,找到適合您的64位架構的正確的庫。

+1

謝謝。我的工作操作系統是64位,所以我所有的代碼都將被編譯並鏈接到64位。 64位CUDA5.0包含32位圖庫似乎很奇怪。 – konjac

+1

在64位操作系統上,您也可以製作並運行32位應用程序,因此您需要32位的'libcudart.so'。 – BenC

+1

我似乎有完全相同的問題。我的'LD_LIBRARY_PATH'在'lib'之前有'lib64',所以在我的系統上似乎不起作用。有任何想法嗎? –

相關問題