Al *_*ndy 6 c++ linux gcc cuda c++11
我想在CUDA 6.0项目中使用C++ 11标准来处理我的C++文件.当我将CUDA 6.0 Nsight Eclipse设置中的编译器更改为g ++并添加-std=c++11选项时,我收到很多错误,如下所示:
error: namespace "std::__gnu_cxx" has no member "__normal_iterator"
Run Code Online (Sandbox Code Playgroud)
显然我必须为CUDA选择一次编译器,然后为我的C++文件选择.
我该怎么做?安装CUDA 6.5(支持未记录的C++ 11)不是一种选择.
问题是CUDA 6.0不支持C++ 11标准,当将-std=c++11选项传递给编译器时,其他源代码的编译将失败[尤其是当使用第三方.c文件JSON,...]时.
在CUDA 6.0 Eclipse中"实现"g ++ hack:项目 - >属性 - >构建 - >设置 - >工具设置 - >构建阶段 - >编译器路径(-ccbin):在此输入下面描述的shell脚本的路径[例]: /home/user/g++.hack
脚本在/home/user/g++.hack:
# g++ Hack
#
# in CUDA 6.0 the source code is always the last parameter
SourceFile="${@: -1}"
# get the file extension
Extension=${SourceFile##*.}
if [ "$Extension" == "cpp" ]
then
StdFlag="-std=c++11"
else
StdFlag=""
fi
# run now the g++ 4.9 in your own path with the personalized std option
/usr/local/bin/g++ $StdFlag $*
Run Code Online (Sandbox Code Playgroud)
别忘了跑chmod a+x /home/user/g++.hack.您的C++ 11源代码必须具有扩展名.cpp - 对于所有其他扩展,不会传递编译器选项.
我希望它可以帮助,直到Nvidia正式支持C++ 11.对我来说这很有效,一旦Nvidia正式支持C++ 11,我就可以切换到"正常"的解决方案.
注意:使用此功能,您将无法在CUDA源代码中使用C++ 11代码,但至少可以使用C++ 11开发主机代码!
| 归档时间: |
|
| 查看次数: |
3549 次 |
| 最近记录: |