2013-03-15 1 views
1

Я полный новичок с haskell, и я делаю тривиальный проект, но мне нужно было запустить cabal install encoding. Но, когда я это сделал, он дал мне эту ошибку:В Haskell, как установить пакет кодировки в Windows?

Configuring encoding-0.6.7.2... 
setup.exe: Missing dependency on a foreign library: 
* Missing (or bad) header file: system_encoding.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. 
cabal.exe: Error: some packages failed to install: 
encoding-0.6.7.2 failed during the configure step. The exception was: 
ExitFailure 1 

Как устранить эту проблему?

ответ

1

TL; ДР:cabal install encoding -f-systemencoding


I found a few forum posts on this topic. Самое главное, сказал был

The missing header is langinfo.h - where it originates I don't know, as I don't have it with either Msys/MinGW or Cygwin and my Cygwin is pretty large these days.

Оттуда я посмотрел на сайте Cygwin для того, где langinfo.h есть. Turns out it comes with the default install of Cygwin. И это его путь:

usr/include/langinfo.h 

So I installed Cygwin, (на самом деле я уже он установлен), а затем я побежал междусобойчик установить так:

cabal install encoding --extra-include-dirs='C:\cygwin\usr\include' 

Это зарегистрировало пакет без проблем.


Update

Хотя это позволит вам зарегистрировать пакет, вы не можете использовать его. Когда я попытался GHCi дал мне эту ошибку:

Loading package encoding-0.6.7.2 ... linking ... ghc: unable to load package `encoding-0.6.7.2' 

Я снова застрял.

Update 2

Я получил некоторую помощь на IRC от джентльмена по имени fryguybob. Это еще один способ установить его: cabal install encoding -f-systemencoding. Это сработало для меня

+2

Как правило, просмотр флагов в файле cabal может указывать на полезные способы избежать необходимости использования внешних библиотек потенциально за счет некоторых из API или некоторой функции. Рад, что смог помочь! – fryguybob

+0

@fryguybob: Как вы на это смотрите? –

+1

Внизу страницы взлома есть ссылка на «описание пакета», которое открывает файл кэша. Вы также можете выполнить 'cabal unpack ...', и это извлечет пакет в каталог, в котором вы можете просмотреть источник. 'cabal info ...' также будет перечислять флаги, но не так много информации о том, что они делают. – fryguybob

 Смежные вопросы

  • Нет связанных вопросов^_^