与CUDA相关的libstdc++.so.6链接问题

4
今天我遇到了一个问题,与链接我的编译好的CUDA有关。我使用最新的Debian测试版2.6.32-3-amd64。我一整天都在编写代码,时不时地编译,没有问题。但是,在进行了一些小的代码更改之后,我出现了以下错误:
gcc -o pa  CUDA.o  histogram256.o  histogram64.o  main.o  -lrt -lm -lcudart  -I. -I/data/cuda/include -I/data/cuda/C/common/inc -L/data/cuda/lib64
/usr/bin/ld: main.o: undefined reference to symbol 'std::basic_ifstream<char, std::char_traits<char> >::close()@@GLIBCXX_3.4'
/usr/bin/ld: note: 'std::basic_ifstream<char, std::char_traits<char> >::close()@@GLIBCXX_3.4' is defined in DSO /usr/lib64/libstdc++.so.6 so try adding it to the linker command line
/usr/lib64/libstdc++.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

我把代码改回去了,但错误还是存在。
库文件存放在正确的位置。(/usr/lib64链接到/usr/lib)
ldd /usr/lib/libstdc++.so.6
    linux-vdso.so.1 =>  (0x00007fff31fff000)
    libm.so.6 => /lib/libm.so.6 (0x00007f15f625a000)
    libc.so.6 => /lib/libc.so.6 (0x00007f15f5ef9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f15f680d000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f15f5ce2000)

希望有人能给出好的建议。

你确定你的环境没有做任何更改吗?如果你回退到旧代码后仍然看到问题,那么很可能不是你的代码引起的。 - JaredC
不幸的是,我非常确定。我改变的唯一一件事就是代码。 - snippl
此时是一个好时机来问一下,是否还有其他人(具有管理员权限)使用相关的机器?无论如何,解决方法是使用-L/usr/lib64 -lstdc++。看起来可能是Debian的更新导致了这个问题。 - Pavan Yalamanchili
我是唯一的。谢谢,这解决了我的问题。 - snippl
2个回答

15

添加

-L/usr/lib64 -lstdc++

我的makefile/命令行参数问题已经解决了。


9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接