Gcc nvcc for linux使用的默认主机编译器

Gcc nvcc for linux使用的默认主机编译器,gcc,compiler-construction,cuda,nvcc,Gcc,Compiler Construction,Cuda,Nvcc,我正在使用Ubuntu10.10上的CUDA4.0和GTX570(计算能力2.0),以及GCC编译器套件。据我所知,在编译过程中,CUDA编译器驱动程序nvcc将.cu文件拆分为主机代码和设备代码,并调用主机编译器编译主机代码和单独编译设备代码。最后,它将生成的主机对象代码和设备PTX代码合并到一个可执行文件中 对于Linux系统,为编译主机代码而调用的默认编译器是什么?它是 C编译器( GCC < /代码>)或GCC套件的C++编译器( G++/COD> >)p> AFAIK它使用g++(更准

我正在使用Ubuntu10.10上的CUDA4.0和GTX570(计算能力2.0),以及GCC编译器套件。据我所知,在编译过程中,CUDA编译器驱动程序nvcc将
.cu
文件拆分为主机代码和设备代码,并调用主机编译器编译主机代码和单独编译设备代码。最后,它将生成的主机对象代码和设备PTX代码合并到一个可执行文件中

对于Linux系统,为编译主机代码而调用的默认编译器是什么?它是
C编译器(<代码> GCC < /代码>)或GCC套件的C++编译器(<代码> G++/COD> >)p> AFAIK它使用
g++
(更准确地说,它使用
gcc
,语言设置为c++),当然还有
g++
作为最终链接。运行<代码> NVCC < /代码>使用<代码> -VBBOSE < /Cord>选项,如果需要的话可以查看更多细节。< /P> < P>您希望<代码> -CCNB<代码>选项> <代码> NVCC < /C> >,例如使用<代码> ICPC < /Cube >(英特尔C++编译器),使用<代码> NVCC -ccBI:ICPC(假设<代码> ICPC < /代码>可在您的代码> $路径< /C> >中使用。


<>注意,你应该总是通过C++编译器(<代码> G++<代码> >代码> ICPC < /Cube >等),因为NVCC >将代码视为C++,即使是C代码。

它可能被代码< CX环境变量重写(如<代码>制作< /COD>通常),并且可以<代码> Struts < /C>程序>(甚至是像
nvcc
)这样的专有程序)来理解它们正在使用的系统调用(和外部程序)nvcc将在编译期间转储所有已执行的命令。因此,它将显示是否调用了gcc或g++。这是一个有用的答案。这似乎解释了
cc1:警告:命令行选项“-std=c++11”对c++/ObjC++有效,但在编译一些CUDA源代码后对c[默认启用]
消息无效。