0
我想在XCode 4.5.2中构建一个小样本的CUDA代码matrixMul.cu。我做了:让Xcode在链接一个目标文件上运行g ++
- 自定义脚本运行nvcc将.cu文件编译为目标文件。
- 然后让Xcode的将其与CUDA LIB链接到产生最终的可执行matrixMul
然而,在连接阶段,Xcode中始终运行这一点,结果上的.o文件,而不是G ++ GCC和becos出现错误:
/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch x86_64 -isysroot ...
Undefined symbols for architecture x86_64:
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in matrixMul.o
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in matrixMul.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
我不知道如何让XCode运行g ++而不是gcc来链接目标文件。我只有项目中的.cu文件,所以没有.cpp来表明它是C++。但是,我在开始创建xcode项目时选择了C++。无论我在构建设置中选择Apple LLVM编译器还是LLVM GCC,它都会为我运行gcc。
谢谢! Gary
当你告诉Xcode源文件是C++时会发生什么? (在右窗格的第一个选项卡中)。 – trojanfoe
@trojanfoe:改变源到C++型后,xcode的运行铛++进行联动,这使我类似的错误的MSG: 的/ usr /斌/铛++ -arch x86_64的-isysroot ... 为架构x86_64的未定义符号: “std :: ios_base :: Init :: Init()”,引用来自: __static_initialization_and_destruction_0(int,int)in matrixMul.o “std :: ios_base :: Init ::〜Init()”,引用来自: 矩阵中的___tcf_0Mul.o ld:找不到体系结构x86_64的符号 clang:error:linker命令失败,退出代码1(使用-v查看调用) – Gary
什么是Init类? – trojanfoe