Jon*_*dal 13 haskell zlib ghc cabal archlinux
我正在使用具有以下配置的VM:
当我尝试使用cabal构建zlib时...
$ cabal install zlib
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
Resolving dependencies...
Downloading zlib-0.5.3.2...
Configuring zlib-0.5.3.2...
Preprocessing library zlib-0.5.3.2...
Stream.hsc:86:21: error: missing binary operator before token "("
Stream.hsc: In function ‘main’:
Stream.hsc:86:21: error: missing binary operator before token "("
Stream.hsc:86:21: error: missing binary operator before token "("
compiling dist/build/Codec/Compression/Zlib/Stream_hsc_make.c failed (exit code 1)
command was: /usr/bin/gcc -c dist/build/Codec/Compression/Zlib/Stream_hsc_make.c -o dist/build/Codec/Compression/Zlib/Stream_hsc_make.o -fno-stack-protector -fno-stack-protector -D__GLASGOW_HASKELL__=700 -Dlinux_BUILD_OS -Dlinux_HOST_OS -Dx86_64_BUILD_ARCH -Dx86_64_HOST_ARCH -I/usr/lib/ghc-7.0.3/bytestring-0.9.1.10/include -I/usr/lib/ghc-7.0.3/base-4.3.1.0/include -I/usr/lib/ghc-7.0.3/include -I/usr/lib/ghc-7.0.3/include -I/usr/lib/ghc-7.0.3/include/
cabal: Error: some packages failed to install:
zlib-0.5.3.2 failed during the building phase. The exception was:
ExitFailure 1
Run Code Online (Sandbox Code Playgroud)
任何人都可以了解这个构建错误吗?
编辑:这是Stream.hsc的一个片段,其中包含行号:
82 import Foreign
83 ( Word8, Ptr, nullPtr, plusPtr, peekByteOff, pokeByteOff, mallocBy tes
84 , ForeignPtr, FinalizerPtr, newForeignPtr_, addForeignPtrFinalizer
85 , withForeignPtr, touchForeignPtr )
86 #if MIN_VERSION_base(4,4,0)
87 import Foreign.ForeignPtr.Unsafe ( unsafeForeignPtrToPtr )
88 import System.IO.Unsafe ( unsafePerformIO )
89 #else
90 import Foreign ( unsafeForeignPtrToPtr, unsafePerformIO )
91 #endif
Run Code Online (Sandbox Code Playgroud)
Dan*_*her 11
由于某种原因,MIN_VERSION_base宏不会被扩展,因此预处理器会看到MIN_VERSION_base(4,4,0)它当然无法处理的条件.我还没有找到为什么宏没有扩展,但解决方法是
Codec/Compression/Zlib/Stream.hsc以删除有问题的宏(你使用的是7.0.3,所以你的基本版本是4.3.1.0,你可以用0替换宏)编辑:稍微调整一下后,我发现要隐藏这些预处理器指令,这些指令不是用于hsc2hs处理的,它们必须被额外的'#'掩盖.Bug报告正在进行中.
poo*_*lie 10
在Ubuntu上,我修复了(或者真的,避免)类似的错误
sudo apt-get install libghc-zlib-dev libghc-zlib-bindings-dev
Run Code Online (Sandbox Code Playgroud)
(我不知道是否需要两者.)
我仍然在GHC 7.8.4上使用haskell软件包zlib-0.5.4.2遇到这个问题.我认为这个问题是图书馆的非标准位置.我通过手工安装zlib 1.2.8解决了这个问题,然后做了:
cabal install zlib --extra-lib-dirs=/usr/local/lib --extra-include-dir=/usr/local/include
Run Code Online (Sandbox Code Playgroud)