cuda不支持最新版gcc解决方案

方案1:

      可以使用 nvcc –compiler-bindir 来指定另外的编译器目录

方案2:

      使用

sudo ln -s /usr/local/gcc46/bin/gcc46 /usr/local/cuda/bin/gcc
sudo ln -s /usr/local/gcc46/bin/g++46 /usr/local/cuda/bin/g++

  当然,上面的gcc46是我安装gcc-4.6的目录

方案3:

    修改/installdir/cuda/include/host_config.h ,改变80行的 “__GNUC_MINOR__ > X” 表达式,使用一个更高的minor版本。如下:

80: #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 7)


Right now, if you try to compile the examples, you will get an error saying “/usr/bin/ld: cannot find -lcuda“.

There is an easy solution for that problem: make some symbolic links to the CUDA libraries.

su -c ‘ln -s /usr/lib64/nvidia/libcuda.so /usr/lib64/libcuda.so && ln -s /usr/lib64/nvidia/libcuda.so.1 /usr/lib64/libcuda.so.1’

reference:

http://reset.etsii.upm.es/en/users/peque/installing-cuda-in-fedora-16/sudo ln s /usr/local/gcc46/bin/gcc46 /usr/local/cuda/bin/gcc sudo ln s /usr/local/gcc46/bin/gcc46 /usr/local/cuda/bin/gcc

RedHat/CentOS源码安装gnu gcc 4.9.1

 

下载最新版 gcc http://gcc.gnu.org/

编译出现错误 “configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.” 须先安装这3个软件包

http://gmplib.org

http://www.mpfr.org

http://www.multiprecision.org 

根据提示的顺序分别安装GMP,MPFR和MPC:

step1: ./configure –prefix=/usr/local/gmp-4.3.2; make install

step2: ./configure –prefix=/usr/local/mpfr-2.4.2 –with-gmp=/usr/local/gmp-4.3.2/; make install

注意:step2依赖于step1,否则会报”configure: error: gmp.h can’t be found, or is unusable.“的错误。

step3: ./configure –prefix=/usr/local/mpc-0.8.1 –with-gmp=/usr/local/gmp-4.3.2/ –with-mpfr=/usr/local/mpfr-2.4.2/; make install

注意:step3同样依赖于前面的库,否则会报”configure: error: libgmp not found or uses a different ABI.和configure: error: libmpfr not found or uses a different ABI.“的错误。

step4: 设置环境变量 export LD_LIBRARY_PATH=/home/usr/gmp:/home/usr/mpfr:/home/usr/mpc:$LD_LIBRARY_PATH

第4步很重要,否则 编译GCC的过程中可能出现“configure: error: cannot compute suffix of object files: cannot compile”的错误

 

gcc 安装configure:./configure –prefix=/home/user/gcc/ –enable-threads=posix –disable-checking –with-gmp=/home/usr/gmp/ –with-mpfr=/home/user/mpfr/ –with-mpc=/home/user/mpc/ [–disable-multilib(for 64bit only)]

 

Make 之前,export LD_RUN_PATH=/usr/local/lib  export LD_LIBRARY_PATH=/usr/local/lib

 

make 

make check 

make install

如果想保留使用旧版的gcc,就不把安装路径/bin加入环境变量path,用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

      首先,查看原来的gcc所在的路径 which gcc  上述命令显示:/usr/bin/gcc。因此:

        cd /usr/bin
        ln -s /usr/local/gcc4.1.1/bin/gcc gcc4
        ln -s /usr/local/gcc4.1.1//bin/g++ g++4
        ln -s
/usr/local/gcc4.1.1/bin/gcj gcj4

这样,就可以分别使用gcc4、g++4来调用GCC,gcj4调用gcj了。而原来的gcc,g++,gcj仍然是原来版本的。

core文件

core文件仅仅是一个内存映像,同时加上调试信息,主要是用来调试的。
用以下命令来阻止系统生成core文件:

ulimit -c 0

下面的命令可以检查生成core文件的选项是否打开: ulimit -a
也可以同时修改系统文件如 ~/.bashrc ~/.bash_profile等来调整core选项
ulimit -c 1024设置core文件大小不超过1024KB
使用core文件:
gdb -c core 或者 gdb -c core 程序名 注意: 需要生成core文件时,编译选项加上-g

linux 常见命令使用-tar、scp、file

1、tar
将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
将 /etc/ 内的所有文件备份下来,并且保存其权限。
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
在 /home 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N ‘2005/06/01′ -zcvf home.tar.gz /home
/home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar –exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
/etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf – /etc | tar -xvf –
解压到指定的目录
[root@xoaocom ~]# tar -zxvf /home/images.tar.gz -C /specific dir
2、scp

cp [options] source dest

cp [options] source… directory

参数:

-a 尽可能将档案状态、权限等资料都照原状予以复制。

-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。

-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。

把一个文件远程copy到另外一台主机上

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root

s把文件从远程主机拷贝到当前系统

cp root@/full.tar.gz 172.19.2.75:/home/root/full.tar.gz home/daisy/full.tar.gz

3、file
查看文件类型命令,可以用file查看.so文件是32位还是64位
 

google code 代码 svn无法下载问题

使用TortoiseSVNcheckout google code代码时,往往无法连接上。 有一个比较简单强大的方式是使用wget。网络状态不好时,非常适合使用wget,非常稳定。
如google code project 是mrphi,则可使用wget -r -np http://mrphi.googlecode.com/svn/trunk/mrphi的方式进行下载(默认下载到当前目录,可以使用 -O 指定下载目录)。
常见wget使用方法:
$ wget -r -np -nd http://example.com/packages/
这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

  • $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

  • $ wget -i filename.txt

此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

  • $ wget -c http://example.com/really-big-file.iso

这里所指定的 -c 选项的作用为断点续传。

  • $ wget -m -k (-H) http://www.example.com/

该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。