4

今天我在链接我编译的 cuda 东西时遇到了问题。

我有一个带有 2.6.32-3-amd64 的最新 debian 测试。

我整天都在写我的代码。不时编译。没问题。但是在进行了较小的代码更改后,我收到了以下错误:

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)

希望有人有好的建议。

4

2 回答 2

15

添加

-L/usr/lib64 -lstdc++

到我的 makefile/commandlineparameters 修复它。

于 2011-02-23T09:19:56.660 回答
9

您也可以使用 g++ 代替 gcc。这将自动链接到 stdc++,而无需您明确指定它。

g++和gcc有什么区别?

于 2011-03-10T23:34:22.277 回答