我刚刚使用Xcode 7在OSX 10.11上安装了CUDA工具包7.5.带有GeForce GT 750M的Macbook Pro
编译(make)样本时,我得到多个重定义错误。以下是前两个:
actual console output (partial)
错误示例:
在tmpxft_0000b964_00000000-19_asyncAPI.compute_20.cudafe1.stub.c:1中包含的文件中: 在/var/folders/bm/fp5n2kzd419c4mbnsmyqf1cm0000gn/T/tmpxft_0000b964_00000000-19_asyncAPI.compute_20.cudafe1.stub.c:7中包含的文件中: 在/Developer/NVIDIA/CUDA-7.5/bin/../include/crt/host_runtime.h:247中包含的文件中: 在/Developer/NVIDIA/CUDA-7.5/bin/../include/common_functions.h:224中包含的文件中: 在/Developer/NVIDIA/CUDA-7.5/bin/../include/math_functions.h:10219中包含的文件中: 在/Developer/NVIDIA/CUDA-7.5/bin/../include/math_functions.hpp:1664中包含的文件中: /usr/include/math.h:204:48:错误:重新定义' inline_isfinitef' inline __attribute (( always_inline ))int inline_isfinitef(float __x){ ^ /usr/include/math.h:204:58:注意:之前的定义在这里 extern“C”{__ attribute((__ always_inline ))内联int __inline_isfinitef(float __x)
错误与math.h包含有关。有趣的是,如果手动编译的一些示例(例如deviceQuery示例)会编译并运行。
我写的自定义代码也失败并出现相同的错误。在我的代码中,如果我注释掉“math.h”并且包含错误是相同的。我确实包括NVIDIA的cutil_math.h
我已经尝试将clang版本更改为6.4,但它没有任何区别。我也试过多个编译器标志无济于事。
答案 0 :(得分:1)
我提供的解决方案可以解决问题,但将来可能会出现问题。
错误显示包含的顺序到问题发生的位置。在这种情况下7.5/bin/../include/math_functions.hpp:1664
在math_functions.hpp的第1664行注释掉#include "math.h"
和#include <cmath>
。这将删除重新定义,您的项目将不再出现此错误,样本将编译。