2011-02-22 5 views
4

오늘 컴파일 된 쿠다 (cuda) 항목을 연결하는 데 문제가 발생했습니다.libstdC++. so.6와 링커 문제

나는 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++ 

를 추가

+0

환경을 변경하지 않았습니까? 이전 코드로 되 돌린 후에도 여전히 문제가 표시되면 코드에서이 문제가 발생했을 가능성은 거의 없습니다. – JaredC

+0

불행히도 저는 꽤 확신합니다. 내가 바꾼 것은 코드뿐 이었어. – snippl

+0

이 시점에서 물어 보는 것은 좋은 시간입니다. 관리자 액세스 권한을 가진 다른 사람이 해당 컴퓨터를 사용합니까? 어쨌든 -L/usr/lib64 -lstdC++를 사용하는 것이 수정 될 것입니다. debian의 업데이트가이 작업을 수행 한 것 같습니다. –

답변

14

/commandlineparameters 그것을 고정.