Tôi gặp sự cố khi biên dịch một số ví dụ đi kèm với CUDA SDK. Tôi đã cài đặt trình điều khiển dành cho nhà phát triển (phiên bản 270.41.19) và bộ công cụ CUDA, sau đó cuối cùng là SDK (cả phiên bản 4.0.17).
Ban đầu nó không biên dịch gì cả cho:
error -- unsupported GNU version! gcc 4.5 and up are not supported!
Tôi tìm thấy dòng chịu trách nhiệm trong 81: /usr/local/cuda/include/host_config.h và đã thay đổi nó thành:
//#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)
từ thời điểm đó, tôi chỉ có một số ví dụ để biên dịch, nó dừng lại với:
In file included from /usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr.h:162:0,
from /usr/include/c++/4.6/ext/atomicity.h:34,
from /usr/include/c++/4.6/bits/ios_base.h:41,
from /usr/include/c++/4.6/ios:43,
from /usr/include/c++/4.6/ostream:40,
from /usr/include/c++/4.6/iterator:64,
from /usr/local/cuda/include/thrust/iterator/iterator_categories.h:38,
from /usr/local/cuda/include/thrust/device_ptr.h:26,
from /usr/local/cuda/include/thrust/device_malloc_allocator.h:27,
from /usr/local/cuda/include/thrust/device_vector.h:26,
from lineOfSight.cu:37:
/usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr-default.h:251:1: error: pasting "__gthrw_" and "/* Android's C library does not provide pthread_cancel, check for
`pthread_create' instead. */" does not give a valid preprocessing token
make[1]: *** [obj/x86_64/release/lineOfSight.cu.o] Error 1
Như một số ví dụ biên dịch, tôi cho rằng đây không phải là vấn đề về trình điều khiển, mà là vấn đề liên quan đến một phiên bản gcc không được hỗ trợ. Hạ cấp không phải là một tùy chọn vì gcc4.6 có một hệ thống phụ thuộc vào thời điểm này ...