cuda程序编译出错: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.5

  • Post author:
  • Post category:linux



编译cuda程序时报错:


/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../libGL.so when searching for -lGL
    /usr/bin/ld: skipping incompatible /lib/libGL.so when searching for -lGL
    /usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL
    /usr/bin/ld: cannot find -lGL

解决办法:


首先,保证GL库已安装。


yum install freeglut


yum install freeglut-devel


若已安装GL编译仍报错,建议采用以下方式(ps. 可以解决我的问题,不知道是否通用哈~)


命令行输入以下指令,获取libGL的位置及详细信息。


$locate libGL.so | egrep ^/usr | xargs file


得到结果如下:


/usr/lib/libGL.so:         symbolic link to `libGL.so.1′

/usr/lib/libGL.so.1:       symbolic link to `libGL.so.1.0.0′

/usr/lib/libGL.so.1.0.0:   ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

/usr/lib64/libGL.so:       broken symbolic link to `libGL.so.1.2.0′

/usr/lib64/libGL.so.1:     symbolic link to `libGL.so.1.0.0′

/usr/lib64/libGL.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped


可以看到

/usr/lib64/libGL.so是一个broken symbolic link


接着通过软链接更新gcc中的libGL,如下


ln -s /usr/lib64/libGL.so.1.0.0 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libGL.so


(ps. 软链接用法: ln -s source destination; 通过建立软链接使destination 指向source文件)


再次编译,问题解决!



版权声明:本文为u010454261原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。