解决堆栈链接器错误

Resolving Stack Linker Error

这个堆栈输出错误是什么意思?

$stack build -v
...
2017-06-16 07:59:19.792336: [info] Linking .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/my-project/my-project ...
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.457898: [warn] Undefined symbols for architecture x86_64:
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.458019: [warn]   "_iconv", referenced from:
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.483052: [warn]       _hs_iconv in libHSbase-4.9.1.0.a(iconv.o)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.558523: [warn]      (maybe you meant: _hs_iconv, _base_GHCziIOziEncodingziIconv_iconvEncoding5_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding10_info , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc_closure , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc1_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding7_info , _base_GHCziIOziEncodingziIconv_iconvEncoding4_info , _base_GHCziIOziEncodingziIconv_iconvEncoding11_info , _base_GHCziIOziEncodingziIconv_iconvEncoding8_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding11_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_info , _base_GHCziIOziEncodingziIconv_iconvEncoding9_info , _base_GHCziIOziEncodingziIconv_iconvEncoding9_closure , _hs_iconv_open , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc_info , _base_GHCziIOziEncodingziIconv_iconvEncodingzuloc1_info , _base_GHCziIOziEncodingziIconv_iconvEncoding3_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding8_info , _hs_iconv_close , _base_GHCziIOziEncodingziIconv_iconvEncoding10_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding7_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding4_closure )
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.558678: [warn]   "_iconv_close", referenced from:
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.584378: [warn]       _hs_iconv_close in libHSbase-4.9.1.0.a(iconv.o)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.659175: [warn]      (maybe you meant: _hs_iconv_close)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.659322: [warn]   "_iconv_open", referenced from:
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.684266: [warn]       _hs_iconv_open in libHSbase-4.9.1.0.a(iconv.o)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.760039: [warn]      (maybe you meant: _hs_iconv_open)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.760166: [warn]   "_locale_charset", referenced from:
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.774056: [warn]       _localeEncoding in libHSbase-4.9.1.0.a(PrelIOUtils.o)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.911418: [warn] ld: symbol(s) not found for architecture x86_64
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.930402: [warn] clang: error: linker command failed with exit code 1 (use -v to see invocation)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.931503: [warn] `gcc' failed in phase `Linker'. (Exit code: 1)
@(Stack/Build/Execute.hs:1070:67)
2017-06-16 07:59:22.961835: [debug] Start: getPackageFiles /Users/kevinmeredith/Workspace/my-project-group/HS/my-project.cabal
@(Stack/Package.hs:251:21)
2017-06-16 07:59:23.011242: [debug] Finished in 49ms: getPackageFiles /Users/kevinmeredith/Workspace/my-project-group/HS/my-project.cabal
@(Stack/Package.hs:251:21)
2017-06-16 07:59:23.016261: [debug] Encoding /Users/kevinmeredith/Workspace/my-project-group/HS/.stack-work/dist/x86_64-osx/Cabal-1.24.2.0/stack-build-cache
@(Data/Store/VersionTagged.hs:51:5)
2017-06-16 07:59:23.017031: [debug] Finished writing /Users/kevinmeredith/Workspace/my-project-group/HS/.stack-work/dist/x86_64-osx/Cabal-1.24.2.0/stack-build-cache
@(Data/Store/VersionTagged.hs:55:5)

还有,我该如何解决?

因为路径 /Users/ 我猜你使用的是 MacOS。

正在看

https://github.com/haskell/haskell-platform/issues/74

代码似乎是针对的头文件编译的 一个版本的 libiconv 并链接到另一个不兼容的版本 libiconv.

您或许可以尝试那里建议的解决方案并添加 ghc 选项

--extra-lib-dirs=/usr/lib

也看看

https://ghc.haskell.org/trac/ghc/ticket/4068