与cuda有关的libstdc ++。so.6的链接器问题
今天我遇到了连接我编译的cuda的问题。
我有一个uptodate debian测试w / 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
我改变了代码,但错误仍然存在。
lib是它应该在的地方。 (/ 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)
希望有人有一个很好的建议。
加入
-L/usr/lib64 -lstdc++
到我的makefile / commandline参数修复它。
你也可以用g ++代替gcc。 这将自动链接到stdc ++,而不必明确指定它。
g ++和gcc有什么区别?
链接地址: http://www.djcxy.com/p/85757.html上一篇: linker problem with libstdc++.so.6 in connection with cuda