Ubuntu12.04 LTS前一段时间发布了.台式机加了内存,所以也就果断升级64位Ubuntu12.04.
笔记本也跟着装上了Ubuntu12.04,装显卡驱动的时候也是遇到一大堆的问题. 会在下一篇博客中介绍显卡分屏的解决方法.
下面就讲一下Ubuntu12.04配置CUDA开发环境的过程和一些问题的解决办法.
下面是我们需要的安装文件:
这里需要说明的一点是为什么我会选择把这些安装文件都放在一个单独的目录下面,而且是选择使用英文.
因为在接下来的安装显卡驱动的过程在,需要关闭Xwindows,切换到终端下去工作,所以无法识别中文,当然,
如果使用的是英文界面的话,则不需要注意这个小细节,其实没什么,只是个小细节.
下载的资源链接是:http://developer.nvidia.com/cuda-downloads (这是最新版本的资源链接)
这个是我在官网的截图,按照步骤做很简单。1-2-3一次下载
1.安装驱动:
在安装驱动之前需要卸载原来的驱动,如果没有安装的话则不需要.
- sudo apt-get -purge remove nvidia-*
然后关闭Xwindows:
- sudo /etc/init.d/lightdm stop
自从Ubuntu11.04之后就使用lightdm替代gdm,请区别.
切换到终端登录,然后安装驱动:
- Ctrl+Alt+F1
-
- sudo chmod a+x CUDA_insall (这里的英文单词好像写错了.)
-
- sudo sh CUDA_insall/devdriver_4.2_linux_32_295.41.run
安装的过程一路很简单,该接受的接受,该YES的时候就别犹豫.
安装完后重启Xwindows.
- sudo /etc/init.d/lightdm start
我的笔记本在重启之后就出现问题,出现六分屏的现象,需要做简单的修改.
- sudo vim /etc/X11/xorg.conf
添加如下字段:
- Section "Screen"
- Identifier "Screen0"
- Device "Device0"
- Monitor "Monitor0"
- DefaultDepth 24
- #Option "NoLogo" "True"
- Option "ModeValidation" "NoTotalSizeCheck"
- SubSection "Display"
- Depth 24
- EndSubSection
- EndSection
其中的logo选项被我注释掉了,是可以选择的,如果不想在启动的时候看到nvidia的logo的话就可以把注释去掉,我是比较喜欢nvidia logo的,所以没有注释掉.
Notes:
如果修改后分屏的问题解决了,但是分辨率却无法改变。像我的笔记本就变成640×800,本来应该是1366×768的。而且在显示中无法调节,则解决的办法是重新安装上面的
步骤安装一遍驱动,我的问题就是这样子解决的。如果在安装的过程中提示显卡驱动冲突,或者是正在使用中的warnning,则reboot之后再重新安装显卡驱动即可.
不出意外,按照上述方法reboot之后就应该会成功了,没注释掉logo的同学就可以看到nvidia的logo了.
2.安装CUDA Toolkit很简单:
- sudo sh CUDA_insall/cudatoolkit_4.2.9_linux_32_ubuntu11.04.run
安装过程可以直接全部Enter带过,要是想自己DIY安装位置的话,则自行决定.
安装完之后需要做一些环境变量的配置:直接编辑 .bashrc文件添加环境变量
系统启动的时候就会自动添加环境变量.
3.编译CUDA样例DEMO(其中有我们需要的template程序):
- sudo sh CUDA_insall/gpucomputingsdk_4.2.9_linux.run
然后可以指定安装位置,默认是在~/NVIDIA_GPU_Computing_SDK
在编译SDK样例之前需要配置一下编译环境,安装一些库.
- sudo apt-get install g++ build-essential
-
- sudo apt-get install freeglut3-dev libx1-dev libxmu-dev
-
- libxi-dev libgl1-mesa-glx libgl1-mesa-dev
其中我的libgl1-*系列的库是安装好的.
然后进入源码目录编译:
- cd NVIDIA_GPU_Computing_SDK/C && make
这是会出现问题:
- CUDA undefined reference to `gluErrorString'
问题处GCC/G++的版本太高,Ubuntu12.04使用的是4.6的版本,而CUDA 4.2需要使用4.4编译.
解决的办法是安装4.4版本的编译器:
- sudo apt-get install aptitude
- sudo aptitude install gcc-4.4 g++-4.4
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 10
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 10
然后再编译,稍稍等待,就成功了!
另外一个问题就是现在使用的是低版本的编译器,如果需要使用高版本的编译器怎么办呢?
解决的办法如下:
我们只需要改变软链接即可.
做法如下:
- sudo uptate-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 30
在需要切换GCC的时候就可以:
- sudo update-alternatives --config gcc
所以只需要手动选择即可.G++同理.
最后给一张SDK样例的快照:
It's beautiful,isn't it?