Haskell nvcc&x2B;操作系统X 10.9.5上的c2hs

Haskell nvcc&x2B;操作系统X 10.9.5上的c2hs,haskell,cuda,nvidia,nvcc,c2hs,Haskell,Cuda,Nvidia,Nvcc,C2hs,我正在构建一个需要nvcc进行编译的软件。我没有支持CUDA的GPU,但实际上我不需要它——一个朋友正在Linux上构建完全相同的软件,他没有CUDA GPU,但一切都很好 我从(CUDA_6.5.14_mac_64.pkg)安装了最新的CUDA工具包,没有出现任何问题。但当我在构建软件时,我遇到了问题 我能够在较小的范围内重现该问题: $ mkdir temp; cd temp; cabal sandbox init $ cabal get cuda Unpacking to cuda-0

我正在构建一个需要
nvcc
进行编译的软件。我没有支持CUDA的GPU,但实际上我不需要它——一个朋友正在Linux上构建完全相同的软件,他没有CUDA GPU,但一切都很好

我从(
CUDA_6.5.14_mac_64.pkg
)安装了最新的CUDA工具包,没有出现任何问题。但当我在构建软件时,我遇到了问题

我能够在较小的范围内重现该问题:

$ mkdir temp; cd temp; cabal sandbox init


$ cabal get cuda
Unpacking to cuda-0.6.5.0/


$ cd cuda-0.6.5.0/Foreign/CUDA/Analysis


$ c2hs -d trace --cpp=/Developer/NVIDIA/CUDA-6.5/bin/nvcc --cppopts=-ccbin --cppopts=/usr/bin/clang --cppopts=-Xcompiler --cppopts=--stdlib=libstdc++ Device.chs
Attempting to read file `Device.chs'...
...parsing `Device'...
...successfully loaded `Device'.
Invoking cpp as `/Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -DC2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2) Device.chs.h'...
In file included from <built-in>:170:
<command line>:3:29: error: expected comma in macro parameter list
#define C2HS_MIN_VERSION(mj 1
                            ^
<command line>:5:11: warning: ISO C99 requires whitespace after the macro name [-Wc99-extensions]
#define rv) (mj<=0&&mn<=18&&rv<=2)
          ^
Device.chs.h:1:10: fatal error: 'cbits/stubs.h' file not found
#include "cbits/stubs.h"
         ^
1 warning and 2 errors generated.
c2hs: Error during preprocessing custom header file

我有Intel Iris Pro 5100(mbp retina 15“2013年末)。

根据,11月21日,一项改变被推到
c2hs
头部,以解决这个问题,这是由nvcc的上游怪癖引起的。因此,在这一点上,使用最新的
c2hs
应该确实有效。

以前从未使用过zsh,可能是因为它在某种程度上扩展(?)您的命令行出现意外情况?即
,mn,
部分似乎已消失。可能尝试在您的命令中预先添加
noglob
?已经尝试过了,使用了
sh
,不幸的是结果完全相同。谢谢,我将很快重试!
$ /Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -DC2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2) Device.chs.h
zsh: parse error near `)'


$ /Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -D'C2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2)' Device.chs.h
# 1 "Device.chs.h"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 170 "<built-in>" 3
# 1 "<command line>" 1
In file included from <built-in>:170:
<command line>:3:29: error: expected comma in macro parameter list
#define C2HS_MIN_VERSION(mj 1
                            ^
<command line>:5:11: warning: ISO C99 requires whitespace after the macro name [-Wc99-extensions]
#define rv) (mj<=0&&mn<=18&&rv<=2)
          ^
# 1 "<built-in>" 2
# 1 "Device.chs.h" 2
Device.chs.h:1:10: fatal error: 'cbits/stubs.h' file not found
#include "cbits/stubs.h"
         ^

1 warning and 2 errors generated.


$ Developer/NVIDIA/CUDA-6.5/bin/nvcc -x c -D 'C2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2)' Device.chs.h
(same issue)
$ echo $PATH
/Users/konrad/bin:/Users/konrad/.ghc-current/bin:/Users/konrad/.cabal/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Developer/NVIDIA/CUDA-6.5/bin

$ echo $DYLD_LIBRARY_PATH
/Developer/NVIDIA/CUDA-6.5/lib:

$ echo $LD_LIBRARY_PATH
/usr/local/cuda/lib:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3

$ cabal --version
cabal-install version 1.20.0.3
using version 1.20.0.0 of the Cabal library

$ c2hs --version
C->Haskell Compiler, version 0.18.2 The shapeless maps, 31 Oct 2014
  build platform is "x86_64-darwin" <1, True, True, 1>

$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

$ gcc-4.9 --version
gcc-4.9 (GCC) 4.9.0 20140411 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.