CUDA2.2 In Fedora11 X86_64

CUDA安装与编译错误解决
本文记录了在Fedora 11 x86_64系统上安装CUDA 2.2过程中遇到的编译错误及解决方案。主要问题包括内联函数声明冲突、链接器无法找到库文件以及编译警告等,并提供了详细的修改步骤。

Install CUDA 2.2 on Fedora11 x86_64.

There are some errors during compiling:

make[1]: Entering directory `/home/lrshdemo/NVIDIA_CUDA_SDK/projects/dct8x8'
/usr/local/cuda/bin/../include/math_functions.h:404: error: inline function ‘int __signbit(double)’ cannot be declared weak
/usr/local/cuda/bin/../include/math_functions.h:409: error: inline function ‘int __signbitf(float)’ cannot be declared weak
/usr/include/bits/mathcalls.h:350: error: inline function ‘int __signbit(double)’ cannot be declared weak
/usr/include/bits/mathcalls.h:350: error: inline function ‘int __signbitf(float)’ cannot be declared weak
/usr/include/bits/mathcalls.h:350: error: inline function ‘int __signbitl(long double)’ cannot be declared weak
/usr/include/bits/mathinline.h:36: error: inline function ‘int __signbitf(float)’ cannot be declared weak
/usr/include/bits/mathinline.h:42: error: inline function ‘int __signbit(double)’ cannot be declared weak
/usr/include/bits/mathinline.h:48: error: inline function ‘int __signbitl(long double)’ cannot be declared weak
/usr/local/cuda/bin/../include/math_functions.h:434: error: inline function ‘int __signbitl(long double)’ cannot be declared weak
make[1]: *** [obj/release/dct8x8.cu.o] Error 255
make[1]: Leaving directory `/home/lrshdemo/NVIDIA_CUDA_SDK/projects/dct8x8'
make: *** [projects/dct8x8/Makefile.ph_build] Error 2


Solution:
Edit /usr/local/cuda/include/math_functions.h, comment line 404, 409, and 434.

Another error:
make -C projects/threadMigration/
make[1]: Entering directory `/home/lrshdemo/NVIDIA_CUDA_SDK/projects/threadMigration'
/usr/bin/ld: cannot find -lcuda
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/threadMigration] Error 1
make[1]: Leaving directory `/home/lrshdemo/NVIDIA_CUDA_SDK/projects/threadMigration'
make: *** [projects/threadMigration/Makefile.ph_build] Error 2

Solution:
Execute the command by root:
ln -s /usr/lib64/nvidia/libcuda.so /usr/lib64/libcuda.so

 

make[1]: Entering directory `/home/frank/NVIDIA_CUDA_SDK/projects/simpleTextureDrv'
simpleTextureDrv.cpp:61: warning: deprecated conversion from string constant to ‘char*’
simpleTextureDrv.cpp:62: warning: deprecated conversion from string constant to ‘char*’
In file included from /usr/include/features.h:376,
                 from /usr/local/cuda/bin/../include/host_config.h:68,
                 from /usr/local/cuda/bin/../include/cuda_runtime.h:45,
                 from <command-line>:0:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make[1]: *** [data/simpleTexture_kernel.cubin] Error 255
make[1]: Leaving directory `/home/frank/NVIDIA_CUDA_SDK/projects/simpleTextureDrv'
make: *** [projects/simpleTextureDrv/Makefile.ph_build] Error 2

 

Solution:

Install glibc-devel(i586)

 

<think>好的,我需要解决用户在RHEL 7系统上安装CUDA和NVIDIA驱动时遇到的依赖问题,特别是dkms、opencl-filesystem和ocl-icd这三个包的依赖问题。首先,我应该回忆一下在RHEL或CentOS上安装这些驱动的一般步骤,以及常见的依赖问题。 根据用户提供的引用内容,安装过程通常包括添加CUDA仓库、安装驱动和CUDA工具包,然后重启。但用户遇到了依赖问题,可能因为默认仓库中没有这些包,或者版本不兼容。RHEL 7的默认仓库可能比较旧,可能需要启用额外的仓库,比如EPEL(Extra Packages for Enterprise Linux),因为EPEL包含了许多额外的软件包,可能包括这些依赖项。 dkms(Dynamic Kernel Module Support)对于动态构建内核模块很重要,尤其是在内核升级后自动重新编译驱动。如果系统里没有安装dkms,需要先安装它。但RHEL 7的默认仓库可能不包含dkms,这时候可能需要从EPEL获取。 opencl-filesystem和ocl-icd可能与OpenCL的支持有关,这些包可能位于EPEL或其他第三方仓库中。用户需要确保这些仓库已经启用,然后才能安装这些依赖项。 接下来,我需要一步步指导用户如何解决这些依赖问题。首先,检查EPEL仓库是否已安装,如果没有,安装EPEL。然后,使用yum或dnf安装所需的依赖包。如果EPEL中没有这些包,可能需要手动下载或寻找其他仓库,比如RPM Fusion。 另外,用户可能使用的是CUDA的官方仓库,但有时候仓库配置可能需要调整,确保启用了正确的仓库。比如,安装CUDA工具包时,可能需要先添加NVIDIA的CUDA仓库,然后进行安装。用户提供的引用中提到了使用wget下载CUDA的rpm包,并安装,这可能已经配置了仓库,但可能缺少其他依赖项的仓库。 如果这些步骤无法解决依赖问题,可能需要手动下载并安装缺失的rpm包,处理依赖关系。不过手动安装可能会导致更多依赖问题,所以优先推荐通过启用合适的仓库来解决。 另外,用户可能需要安装kernel-devel和kernel-headers包,以便dkms能够正确编译内核模块。这些包通常与当前运行的内核版本对应,所以需要确保版本匹配,否则可能导致问题。 总结解决方案的步骤可能包括: 1. 安装EPEL仓库。 2. 安装dkms、opencl-filesystem、ocl-icd等包。 3. 确保kernel-devel和kernel-headers已安装。 4. 配置NVIDIA CUDA仓库,并安装驱动和CUDA工具包。 5. 处理可能的依赖冲突,使用yum的解决方法,比如yum install --skip-broken或者手动排除某些包。 同时,需要提醒用户在安装前关闭图形界面,进入多用户模式,避免驱动安装冲突。安装完成后重启系统,并验证驱动是否正确安装,使用nvidia-smi命令。 可能还需要检查系统是否更新到最新状态,运行yum update,确保所有包都是最新的,减少兼容性问题。 最后,如果用户仍然遇到问题,可能需要查找特定版本的依赖包,或者参考NVIDIA的官方文档和社区支持,确认是否有已知的兼容性问题或解决方案。</think>### 分步解决RHEL 7中CUDA驱动的依赖问题 #### 1. 准备工作 在安装前,需关闭图形界面以释放GPU资源: ```bash sudo systemctl set-default multi-user.target sudo systemctl isolate multi-user.target ``` #### 2. 安装EPEL仓库 EPEL仓库提供额外的软件包,可解决大部分依赖问题: ```bash sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ``` #### 3. 安装内核开发包 确保内核开发包与当前内核版本一致: ```bash sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) ``` #### 4. 解决DKMS依赖 RHEL 7默认不提供DKMS,需从EPEL安装: ```bash sudo yum install -y dkms ``` #### 5. 安装OpenCL相关依赖 通过EPEL仓库安装缺失的OpenCL包: ```bash sudo yum install -y opencl-filesystem ocl-icd ``` #### 6. 添加NVIDIA CUDA仓库 手动添加CUDA仓库以获取驱动和工具包: ```bash wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-11-8-local-11.8.0_520.61.05-1.x86_64.rpm sudo rpm -i cuda-repo-rhel7-11-8-local-11.8.0_520.61.05-1.x86_64.rpm sudo yum clean all ``` #### 7. 安装驱动和CUDA工具包 优先安装驱动再安装CUDA工具包: ```bash sudo yum -y install nvidia-driver-latest-dkms sudo yum -y install cuda ``` #### 8. 处理依赖冲突 若出现依赖冲突,尝试以下方法: ```bash sudo yum install --skip-broken cuda # 忽略冲突包 # 或手动排除冲突包 sudo yum install -y cuda --exclude=package_name ``` #### 9. 重启系统并验证 ```bash sudo reboot nvidia-smi # 检查驱动状态 ``` #### 关键注意事项 - **内核版本匹配**:若内核升级过,需重启系统以确保`kernel-devel`与运行内核一致[^2]。 - **离线安装**:若在线仓库不可用,需手动下载缺失的RPM包并解决依赖链[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值