haskell: iconv на win32 - _iconv_open
От: trop Россия  
Дата: 26.07.10 06:49
Оценка:
скачал и установил iconv-1.19 в c:\iconv.
собрал package iconv-0.4.0.2 таким образом (на всякий случай добавив пути в INCLUDE и LIB):
runhaskell Setup configure --extra-include-dirs=c:\iconv\include --extra-lib-dirs=c:\iconv\lib
runhaskell Setup build
runhaskell Setup install

но ghc чего-то не находит:
C:\hs>ghc --make en.hs
Linking en.exe ...
C:\ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x2196): undefined reference to `iconv_open'
C:\ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x2348): undefined reference to `iconv_close'
C:\ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x33f3): undefined reference to `iconv'
collect2: ld returned 1 exit status

ghci:
Prelude Main> :l en.hs
Ok, modules loaded: Main.
Prelude Main> main
Loading package bytestring-0.9.1.4 ... linking ... <interactive>: C:\ghc\i
conv-0.4.0.2\ghc-6.10.4\HSiconv-0.4.0.2.o: unknown symbol `_iconv_open'
: unable to load package `bytestring-0.9.1.4'

Prelude Main> :l eml.hs
...
Loading package iconv-0.4.0.2 ... linking ... <interactive>: C:\ghc\iconv-
0.4.0.2\ghc-6.10.4\HSiconv-0.4.0.2.o: unknown symbol `_iconv_open'
: unable to load package `iconv-0.4.0.2'

чем это лечится?
-
Re: haskell: iconv на win32 - _iconv_open
От: LeNsTR  
Дата: 26.07.10 07:46
Оценка:
Здравствуйте, trop, Вы писали:

Попробуйте так: ghc -package iconv --make en.hs

T>скачал и установил iconv-1.19 в c:\iconv.

T>собрал package iconv-0.4.0.2 таким образом (на всякий случай добавив пути в INCLUDE и LIB):
T>
T>runhaskell Setup configure --extra-include-dirs=c:\iconv\include --extra-lib-dirs=c:\iconv\lib
T>runhaskell Setup build
T>runhaskell Setup install
T>

T>но ghc чего-то не находит:
T>
T>C:\hs>ghc --make en.hs
T>Linking en.exe ...
T>C:\ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x2196): undefined reference to `iconv_open'
T>C:\ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x2348): undefined reference to `iconv_close'
T>C:\ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x33f3): undefined reference to `iconv'
T>collect2: ld returned 1 exit status

T>ghci:
T>Prelude Main> :l en.hs
T>Ok, modules loaded: Main.
T>Prelude Main> main
T>Loading package bytestring-0.9.1.4 ... linking ... <interactive>: C:\ghc\i
T>conv-0.4.0.2\ghc-6.10.4\HSiconv-0.4.0.2.o: unknown symbol `_iconv_open'
T>: unable to load package `bytestring-0.9.1.4'

T>Prelude Main> :l eml.hs
T>...
T>Loading package iconv-0.4.0.2 ... linking ... <interactive>: C:\ghc\iconv-
T>0.4.0.2\ghc-6.10.4\HSiconv-0.4.0.2.o: unknown symbol `_iconv_open'
T>: unable to load package `iconv-0.4.0.2'
T>

T>чем это лечится?
Re[2]: haskell: iconv на win32 - _iconv_open
От: trop Россия  
Дата: 26.07.10 09:57
Оценка:
Здравствуйте, LeNsTR, Вы писали:
LNT>Попробуйте так: ghc -package iconv --make en.hs

C:\hs>ghc -package iconv --make en.hs
Linking en.exe ...
c:/ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x2196): undefined reference to `iconv_open'
c:/ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x2348): undefined reference to `iconv_close'
c:/ghc\iconv-0.4.0.2\ghc-6.10.4/libHSiconv-0.4.0.2.a(Internal.o):fake:(.text+0x33f3): undefined reference to `iconv'
collect2: ld returned 1 exit status

мне кажется, что я как-то не так установил, чего-то не учёл..
как-будто ghci не видит dll/lib
-
Re[2]: haskell: iconv на win32 - _iconv_open
От: trop Россия  
Дата: 26.07.10 10:29
Оценка:
PS:
пакет собрался без ошибок

C:\hs>ghc-pkg describe iconv
name: iconv
version: 0.4.0.2
license: BSD3
copyright: (c) 2006-2008 Duncan Coutts
maintainer: Duncan Coutts <duncan@haskell.org>
stability: experimental
homepage:
package-url:
description: Provides an interface to the POSIX iconv library functions
             for string encoding conversion.
category: Text
author: Duncan Coutts <duncan@haskell.org>
exposed: True
exposed-modules: Codec.Text.IConv
hidden-modules: Codec.Text.IConv.Internal
import-dirs: c:/ghc\iconv-0.4.0.2\ghc-6.10.4
library-dirs: c:/ghc\iconv-0.4.0.2\ghc-6.10.4 c:\iconv\lib
hs-libraries: HSiconv-0.4.0.2
extra-libraries:
extra-ghci-libraries:
include-dirs: C:\iconv\include
includes: iconv.h
depends: base-4.1.0.0 bytestring-0.9.1.4
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: c:/ghc\doc\iconv-0.4.0.2\html\iconv.haddock
haddock-html: c:/ghc\doc\iconv-0.4.0.2\html


C:\iconv\lib>ls -la
total 1021
drwxrwxrwx   1 user     group           0 Jul 26 11:36 .
drwxrwxrwx   1 user     group           0 Jul 26 10:45 ..
-rw-rw-rw-   1 user     group         187 Oct 14  2004 charset.alias
-rw-rw-rw-   1 user     group        1024 Oct 14  2004 libcharset-bcc.lib
-rw-rw-rw-   1 user     group        3440 Oct  2  2004 libcharset.a
-rw-rw-rw-   1 user     group        3416 Oct 14  2004 libcharset.dll.a
-rw-rw-rw-   1 user     group         799 Jul 26 10:45 libcharset.la
-rw-rw-rw-   1 user     group         811 Oct 10  2004 libcharset.la.orig
-rw-rw-rw-   1 user     group        2728 Oct 14  2004 libcharset.lib
-rw-rw-rw-   1 user     group         284 Oct 14  2004 libcharset1.def
-rw-rw-rw-   1 user     group        1536 Oct 14  2004 libiconv-bcc.lib
-rw-rw-rw-   1 user     group     1009570 Oct  2  2004 libiconv.a
-rw-rw-rw-   1 user     group        8230 Oct 14  2004 libiconv.dll.a
-rw-rw-rw-   1 user     group         791 Jul 26 10:45 libiconv.la
-rw-rw-rw-   1 user     group         803 Oct 10  2004 libiconv.la.orig
-rw-rw-rw-   1 user     group        4216 Oct 14  2004 libiconv.lib
-rw-rw-rw-   1 user     group         474 Oct 14  2004 libiconv2.def

C:\iconv\include>ls -la
total 10
drwxrwxrwx   1 user     group           0 Jul 26 10:45 .
drwxrwxrwx   1 user     group           0 Jul 26 10:45 ..
-rw-rw-rw-   1 user     group        5309 Oct  2  2004 iconv.h
-rw-rw-rw-   1 user     group        1838 Oct  2  2004 libcharset.h
-rw-rw-rw-   1 user     group        1682 Oct  2  2004 localcharset.h

C:\iconv\bin>ls -la
total 1085
drwxrwxrwx   1 user     group           0 Jul 26 10:45 .
drwxrwxrwx   1 user     group           0 Jul 26 10:45 ..
-rwxrwxrwx   1 user     group       16896 Oct 14  2004 iconv.exe
-rw-rw-rw-   1 user     group       11776 Oct 14  2004 libcharset1.dll
-rw-rw-rw-   1 user     group      978432 Oct 14  2004 libiconv2.dll
-rw-rw-rw-   1 user     group      101888 Oct  9  2004 libintl3.dll
-
Re[3]: haskell: iconv на win32 - _iconv_open
От: trop Россия  
Дата: 28.07.10 12:24
Оценка:
поднял ubuntu на vmware, там всё работает
-
Re[4]: haskell: iconv на win32 - _iconv_open
От: awson  
Дата: 28.07.10 18:34
Оценка:
Здравствуйте, trop, Вы писали:

T>поднял ubuntu на vmware, там всё работает


Ладно, уговорил. Нужно просто посмотреть iconv.cabal.

Там написано:
  if os(darwin) || os(freebsd)
    -- on many systems the iconv api is part of the standard C library
    -- but on some others we have to link to an external libiconv:
    extra-libraries: iconv


Винда — не darwin и не freebsd и iconv api на ней не есть "part of the standard C library". Дальше объяснять?
Re[5]: haskell: iconv на win32 - _iconv_open
От: trop Россия  
Дата: 29.07.10 08:15
Оценка:
Здравствуйте, awson, Вы писали:

A>Винда — не darwin и не freebsd и iconv api на ней не есть "part of the standard C library". Дальше объяснять?


получается, что на винде даже установленный libiconv не способствует
-
Re[6]: haskell: iconv на win32 - _iconv_open
От: awson  
Дата: 29.07.10 10:00
Оценка:
Здравствуйте, trop, Вы писали:

T>получается, что на винде даже установленный libiconv не способствует


Ну вы даете. Просто уберите if и оставьте
extra-libraries: iconv
.
Re[7]: haskell: iconv на win32 - _iconv_open
От: trop Россия  
Дата: 20.08.10 16:54
Оценка:
Здравствуйте, awson, Вы писали:
A>Здравствуйте, trop, Вы писали:
T>>получается, что на винде даже установленный libiconv не способствует
A>Ну вы даете. Просто уберите if и оставьте
extra-libraries: iconv
.


так на винде вручную ставил, без cabal,
собралось и поставилось без ошибок, но код с iconv не линкуется.
как вылечить так и не понял.

на лине всё работает.
-
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.