运行Haskell代码,Haskell OSX iconv时的体系结构x86_64 [英] architecture x86_64 while running Haskell code, Haskell OSX iconv

查看:80
本文介绍了运行Haskell代码,Haskell OSX iconv时的体系结构x86_64的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在计算机上编译有效的Haskell代码时,它抛出了体系结构x86_64的错误.在我朋友的具有相同体系结构的计算机上,它运行良好.

When I was compiling a working Haskell code on my computer, It's throwing this error of architecture x86_64. It was working fine on my friend's computer which is of the same architecture.

  $ ghc --make BoardMain.hs
    Linking BoardMain ...
    Undefined symbols for architecture x86_64:
      "_iconv", referenced from:
          _hs_iconv in libHSbase-4.9.1.0.a(iconv.o)
         (maybe you meant: _hs_iconv, _base_GHCziIOziEncodingziIconv_iconvEncoding5_closure , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc_info , _base_GHCziIOziEncodingziIconv_iconvEncoding9_info , _hs_iconv_open , _base_GHCziIOziEncodingziIconv_iconvEncoding10_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding11_info , _base_GHCziIOziEncodingziIconv_iconvEncoding7_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding8_info , _base_GHCziIOziEncodingziIconv_iconvEncoding11_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding8_closure , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc_closure , _hs_iconv_close , _base_GHCziIOziEncodingziIconv_iconvEncoding4_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding10_info , _base_GHCziIOziEncodingziIconv_iconvEncoding3_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding9_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_closure , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc1_info , _base_GHCziIOziEncodingziIconv_iconvEncoding7_info , _base_GHCziIOziEncodingziIconv_iconvEncoding2_info , _base_GHCziIOziEncodingziIconv_iconvEncoding4_info , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc1_closure )
      "_iconv_close", referenced from:
          _hs_iconv_close in libHSbase-4.9.1.0.a(iconv.o)
         (maybe you meant: _hs_iconv_close)
      "_iconv_open", referenced from:
          _hs_iconv_open in libHSbase-4.9.1.0.a(iconv.o)
         (maybe you meant: _hs_iconv_open)
      "_locale_charset", referenced from:
          _localeEncoding in libHSbase-4.9.1.0.a(PrelIOUtils.o)
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    `gcc' failed in phase `Linker'. (Exit code: 1)

推荐答案

该错误不是由于体系结构引起的.该错误是由于可能与MacPorts一起安装的另一个libiconv位于

The error isn't due to the architecture. The error is because of the another libiconv probably installed with MacPorts is at

/opt/local/lib 作为/opt/local/lib/libiconv.*

/opt/local/lib as /opt/local/lib/libiconv.*

在编译代码时,它指的是Macports libiconv,它与OS X libiconv有所不同.我们需要使用OS X libiconv的机器,以确保它使用位于

While compiling the code, it refers to Macports libiconv which is somehow different from OS X libiconv. We need the machine to use OS X libiconv so to make sure it uses the OS X libconv which is at

/usr/lib 作为/usr/lib/libiconv.*

/usr/lib as /usr/lib/libiconv.*

我们需要在添加-L/usr/lib即

we need to pass the extra library direction command to cabal or ghc .. while compiling by adding -L/usr/lib i.e.,

ghc -L/usr/lib --make file.hs
cabal exec -- ghc -L/usr/lib --make BoardMain.hs

您甚至可以尝试添加 Extra-lib-dir: -/usr/lib 到我们的stack.yaml.请参阅,以获取有关此的更多信息.

You can even try adding extra-lib-dir: - /usr/lib to our stack.yaml. refer this for more information on this.

或者通过在/opt/local/lib 处停用libconv来确保您不会破坏其他文件中的某些链接.

Or by deactivating libconv at /opt/local/lib If you are sure that they aren't going to break some link in some other file.

这篇关于运行Haskell代码,Haskell OSX iconv时的体系结构x86_64的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆