In particular, I'm running from the Atom IDE engine.
The Atom integration invokes this command:
/Users/aesa/Code/Nix/haskell-ide-engine/.stack-work/install/x86_64-osx-nix/lts-11.17/8.2.2/libexec/x86_64-osx-ghc-8.2.2/cabal-helper-0.8.0.4/cabal-helper-wrapper \
"--with-ghc=/nix/store/akpfx4dwldj6s6rvnamnc24lkaxgrhl2-ghc-8.2.2/bin/ghc" \
"--with-ghc-pkg=/nix/store/akpfx4dwldj6s6rvnamnc24lkaxgrhl2-ghc-8.2.2/bin/ghc-pkg" \
"--with-cabal=cabal" \
"/Users/aesa/Code/Katas/Day19" \
"/Users/aesa/Code/Katas/Day19/.stack-work/dist/x86_64-osx-nix/Cabal-2.0.1.0" \
"package-db-stack" \
"flags" \
"compiler-version" \
"ghc-merged-pkg-options" \
"config-flags" \
"non-default-config-flags" \
"ghc-src-options" \
"ghc-pkg-options" \
"ghc-lang-options" \
"ghc-options" \
"source-dirs" \
"entrypoints" \
"needs-build-output"
The corresponding output from that operation is:
Linking /Users/aesa/.cache/cabal-helper/cabal-helper0.8.0.4-Cabal2.0.1.0 ...
clang-5.0: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
clang-5.0: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
Undefined symbols for architecture x86_64:
"_iconv", referenced from:
_hs_iconv in libHSbase-4.10.1.0.a(iconv.o)
(maybe you meant: _base_GHCziIOziEncodingziIconv_iconvEncoding_closure, _base_GHCziIOziEncodingziIconv_iconvEncoding1_info , _base_GHCziIOziEncodingziIconv_iconvEncoding4_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding7_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding14_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding4_info , _base_GHCziIOziEncodingziIconv_iconvEncoding6_closure , _hs_iconv , _base_GHCziIOziEncodingziIconv_iconvEncoding5_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding8_info , _hs_iconv_open , _base_GHCziIOziEncodingziIconv_iconvEncoding10_closure , _hs_iconv_close , _base_GHCziIOziEncodingziIconv_iconvEncoding10_info , _base_GHCziIOziEncodingziIconv_iconvEncoding11_info , _base_GHCziIOziEncodingziIconv_iconvEncoding12_info , _base_GHCziIOziEncodingziIconv_iconvEncoding2_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_info , _base_GHCziIOziEncodingziIconv_iconvEncoding_info , _base_GHCziIOziEncodingziIconv_iconvEncoding8_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding9_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding9_info , _base_GHCziIOziEncodingziIconv_iconvEncoding3_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding6_info , _base_GHCziIOziEncodingziIconv_iconvEncoding12_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding11_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding14_info , _base_GHCziIOziEncodingziIconv_iconvEncoding7_info , _base_GHCziIOziEncodingziIconv_iconvEncoding13_bytes , _base_GHCziIOziEncodingziIconv_iconvEncoding1_closure )
"_iconv_open", referenced from:
_hs_iconv_open in libHSbase-4.10.1.0.a(iconv.o)
(maybe you meant: _hs_iconv_open)
"_iconv_close", referenced from:
_hs_iconv_close in libHSbase-4.10.1.0.a(iconv.o)
(maybe you meant: _hs_iconv_close)
"_locale_charset", referenced from:
_localeEncoding in libHSbase-4.10.1.0.a(PrelIOUtils.o)
ld: symbol(s) not found for architecture x86_64
clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
`cc' failed in phase `Linker'. (Exit code: 1)
Worth Noting:
iconv --version
16:41:59
iconv (GNU libiconv 1.11)
Copyright (C) 2000-2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Bruno Haible.
And iconv is installed under /usr/bin/iconv
I guess it came with the system?
I've also come across this stack overflow thread.
However, I don't know how to determine where the other libiconv dependencies might be, other than the binary.
Thanks in advance
I've also followed along with the suggestions put forth in this issue thread
https://github.com/commercialhaskell/stack/issues/825
But to no avail. /:
馃憤
Having exactly the same issue with Nix 2.1, from which I've installed stack and cabal-install, and used them to build haskell-ide-engine from source, on macOS 10.13.6.
I've also come across this (all the way back from 2011)
http://blog.omega-prime.co.uk/2011/01/28/solving-ghc-iconv-problems-on-os-x-10-6/
But I didn't have success in fixing the iconv linker error.
@AesaKamar Can you check that /usr/lib/libiconv.dylib exists? And if it does that nm /usr/lib/libiconv.dylib | grep _locale_charset returns some address?
/usr/lib/libiconv.dylib does existnm /usr/lib/libiconv.dylib | grep _locale_charset returns 0000000000014ac7 T _locale_charsetAnd which iconv yields /usr/bin/iconv
FWIW, not directly related to haskell-ide-engine, but I've been having trouble building anything with cabal after installing it with Nix, and just got it working by introducing a -liconv to the build command. Adding this to my cabal file worked:
extra-libraries: iconv
Most helpful comment
FWIW, not directly related to haskell-ide-engine, but I've been having trouble building anything with cabal after installing it with Nix, and just got it working by introducing a
-liconvto the build command. Adding this to my cabal file worked:extra-libraries: iconv