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)
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 as /opt/local/lib/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 as /usr/lib/libiconv.*
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
You can even try adding extra-lib-dir: - /usr/lib to our stack.yaml. refer this for more information on this.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With