cuda GPU Computing Toolkit 编译错误的一些解决方法

1. gnu version 的问题
对于cuda 4.0来说, 如果你的gcc version > 4.5的话编译会出错。 解决方法是安装版本小于4.5的gcc。
以gcc-4.4为例, 下载gcc-4.4,
“wget ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.4.6/gcc-4.4.6.tar.bz2″。
编译gcc,
“./configure –prefix=/opt/gcc-4.4”
修改$CUDADIR/bin/nvcc.profile, 添加:
compiler-bindir=/opt/gcc-4.4/bin

2. can’t find -lcuda
首先确保是否添加$(CUDADIR)/lib及$(CUDADIR)/lib64的动态链接, 检查方法:
ldconfig -p | grep cuda
添加方法很多:
1. 在.bashrc添加相应的LD_LIBRARY_PATH
2. 在/etc/ld.conf.d/中添加一个文件cuda-lib.conf, 在文件中添加
/usr/local/lib
/usr/local/lib64

我在openSUSE11.4下编译时, 到此就能够正常编译, 但在fedora15下确遇到了问题, 后来才发现部分nvida lib在fedora15下
安装到了/usr/lib/nvidia下面, 这个问题似乎没有很好的解决方法, 一个勉强可为的方法是:
对于发生这种编译错误的项目的Makefile中添加
LIB+=-L/usr/lib/nvidia
或者直接添加到common.mk中,
grep USEDRVAPI common/* -n
–>common/common.mk:277: ifeq ($(USEDRVAPI),1)
跳到common.mk的277行,在-lcuda前添加
LIB += -L/usr/lib/nvidia

在编译完C后, 你会发现OpenCL的编译也会出现类似问题

其实我在ldconfig中发现/usr/lib/nvidia的动态库是已在缓存中了的, 不知道为什么链接不上, 还待高人解答

About seckcoder

People behind the pixels. View all posts by seckcoder

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: