关于Fedora编译失败的CUDA

时间:2013-07-19 22:04:14

标签: c++ cuda fedora nvidia

在我的新Fedora19系统上安装CUDA 5.0之后,我发现CUDA 5.5是一个更好的候选者,因为它采用rpm格式。我按照here的安装说明进行了操作,一切都很顺利,直到我尝试编译样本。首先,它将样本安装到/ usr / local / cuda / samples,我必须确保我的LD_LIBRARY_PATH包含/ usr / local / cuda / lib(不仅仅是5.5版本),但后来我得到以下两个我尝试运行'make all'命令时出错。

../../common/inc/exception.h: In constructor ‘Exception<Std_Exception>::Exception()’:
../../common/inc/exception.h:129:94: warning: delegating constructors only available with -std=c++11 or -std=gnu++11 [enabled by default]
Exception<Std_Exception>::Exception() :

我认为C ++ 11是默认版本?然后当我尝试编译matrixMulDrv时,我得到以下错误,这实际上没有意义:

/usr/local/cuda-5.5/bin/nvcc -ccbin g++   -m64        -o matrixMulDrv matrixMulDrv.o  -L/usr/lib64/nvidia -lcuda
/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status

我想知道是否有其他人有这种性质的问题。我已经移动到5.5,所以我可以使用当前的gcc编译器(4.8.1)。当我查看/ usr / lib64 / nvidia时,我会看到我认为需要的所有文件,包括libcuda.so.1。有没有人见过这个?

3 个答案:

答案 0 :(得分:2)

关于第一个问题:

../../common/inc/exception.h: In constructor ‘Exception<Std_Exception>::Exception()’:
../../common/inc/exception.h:129:94: warning: delegating constructors only available with -std=c++11 or -std=gnu++11 [enabled by default]
Exception<Std_Exception>::Exception() :

这些消息只是警告,因此编译应该仍然没有问题。

关于第二个问题:

/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status

查看/ usr / lib64 / nvidia并确保libcuda.so和libcuda.so.1符号链接都存在并指向libcuda.so。[您的驱动程序版本]。

在我的安装中,无论出于何种原因,都未创建/usr/lib64/nvidia/libcuda.so符号链接。如果你的遗失,那么输入(作为root):

ln -s /usr/lib64/nvidia/libcuda.so.VERSION /usr/lib64/nvidia/libcuda.so

VERSION 替换为您的nvidia驱动程序的版本号(例如libcuda.so.319.32)。

这会解决您的问题吗?

答案 1 :(得分:1)

Fedora 18与GCC 4.7.2 / GLIBC 2.16是CUDA 5.5 RC的officially supported distro。 Fedora 19不是,也没有任何迹象表明支持GCC 4.8.x.你有麻烦我并不感到惊讶。您在libcuda.so中看到的/usr/lib64/nvidia与不同版本的GLIBC(2.16)相关联,而不是most likely on your machine(2.17)。

我可以想象,Fedora 19的唯一前进方法是将您的(即安装备用)GCC / GLIBC降级到Fedora 18附带的那个。转换到Fedora 18可能更容易。

答案 2 :(得分:0)

CUDA is highly specific to the Linux kernel version。例如,CUDA 6.5仅保证与Fedora 20 kernel 3.12一起使用。

# Install kernel 3.16.2
sudo yum -y install https://kojipkgs.fedoraproject.org/packages/kernel/3.16.2/201.fc20/x86_64/kernel-3.16.2-201.fc20.x86_64.rpm
sudo yum -y install https://kojipkgs.fedoraproject.org/packages/kernel/3.16.2/201.fc20/x86_64/kernel-devel-3.16.2-201.fc20.x86_64.rpm
sudo yum -y install libvdpau-devel
sudo reboot

# Install cuda 6.5
wget http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.14_linux_64.run
sudo bash cuda_6.5.14_linux_64.run --override

降级内核以匹配CUDA System Requirements中指定的版本会很有帮助。