Hi Samuel, I'm not sure whether this bug should be marked as serious. Since your test cases are mixing the default cc (GCC-6) and clang-3.8 together.
I reproduced the failure you reported, but there is a simpler solution to the issue as shown below. test$ CC=clang-3.8 make clang-3.8 -c -o test.o test.c nvcc -ccbin clang-3.8 -c test-cuda.cu -o test-cuda.o nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecat ed, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to s uppress warning). clang-3.8 test.o test-cuda.o -lcudart -o test test2$ CC=clang-3.8 make clang-3.8 -c -o test.o test.c clang-3.8 -c test-clang.c -o test-clang.o clang-3.8 test.o test-clang.o -o test Maybe this is a bug about GCC's linking process on a set of GCC-6 and clang-3.8 produced objects. I did further test on your test2.tgz, swapping GCC-6 and clang-3.8: test2$ cat Makefile CLANG=cc [...] test2$ CC=clang-3.8 make clang-3.8 -c -o test.o test.c cc -c test-clang.c -o test-clang.o clang-3.8 test.o test-clang.o -o test Clang-3.8 is able to link a set of mixed object files while GCC-6 fails to do so. I guess this bug is a GCC-6 bug and not related to CUDA? On the other hand, for instance, cuda application package "caffe-contrib" was thoroughly and finely compiled by clang-3.8 . Best,