我正在尝试在win32 / cygwin上编译Network.HTTP(http://hackage.haskell.org/package/network)。但是,它确实失败并显示以下消息:
Setup.hs: Missing dependency on a foreign library:
* Missing (or bad) header file: HsNet.h
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
If the header file does exist, it may contain errors that are caught by the C
compiler at the preprocessing stage. In this case you can re-run configure
with the verbosity flag -v3 to see the error messages.
不幸的是,它没有提供更多线索。 HsNet.h包含sys / uio.h,实际上不应包括在内,应该正确配置。
答案 0 :(得分:3)
请勿使用cygwin,而是按照Johan Tibells方式
安装MSYS
Install the latest Haskell Platform. Use the default settings.
Download version 1.0.11 of MSYS. You'll need the following files:
MSYS-1.0.11.exe
msysDTK-1.0.1.exe
msysCORE-1.0.11-bin.tar.gz
The files are all hosted on haskell.org as they're quite hard to find in the official MinGW/MSYS repo.
Run MSYS-1.0.11.exe followed by msysDTK-1.0.1.exe. The former asks you if you want to run a normalization step. You can skip that.
Unpack msysCORE-1.0.11-bin.tar.gz into C:\msys\1.0. Note that you can't do that using an MSYS shell, because you can't overwrite the files in use, so make a copy of C:\msys\1.0, unpack it there, and then rename the copy back to C:\msys\1.0.
Add C:\Program Files\Haskell Platform\VERSION\mingw\bin to your PATH. This is neccesary if you ever want to build packages that use a configure script, like network, as configure scripts need access to a C compiler.
这些步骤是Tibell用于编译网络包以获取胜利的步骤,我在大多数haskell平台版本上已成功使用过几次。
答案 1 :(得分:1)
可以在win32 / cygwin上构建网络。而上述步骤虽然有用(由Jonke提供)可能没有必要。
在执行配置步骤时,请指定
runghc Setup.hs configure --configure-option="--build=mingw32"
因此,为mingw32配置了库,否则如果您尝试链接或使用网络库,则会获得链接或“未定义的引用”。
答案 2 :(得分:1)
This结合@Yogesh Sajanikar的回答让它对我有用(在win64 / cygwin上):
- 确保路径上的gcc不是Mingw / Cygwin,但是 C:\ GHC \ GHC-6.12.1 \的mingw \ BIN \ gcc.exe
(运行
export PATH="/cygdrive/.../ghc-7.8.2/mingw/bin:$PATH"
在Cygwin shell中运行cabal install network
之前