#haskell #ghc #haskell-stack
#haskell #ghc #haskell-stack
Вопрос:
В Mac OS 10.15.7 с установленной платформой haskell у меня странное поведение. Код отлично работает в ghci, но связывание во время компиляции не работает:
% ghc Merge.hs
Loaded package environment from /Users/ar/.ghc/x86_64-darwin-8.8.4/environments/default
[1 of 1] Compiling Main ( Merge.hs, Merge.o ) [Optimisation flags changed]
Linking Merge ...
ld: can't open output file for writing: Merge, errno=21 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)
Но ghci работает нормально:
% ghci Merge.hs
GHCi, version 8.8.4: https://www.haskell.org/ghc/ :? for help
Loaded package environment from /Users/ar/.ghc/x86_64-darwin-8.8.4/environments/default
[1 of 1] Compiling Main ( Merge.hs, interpreted )
Ok, one module loaded.
*Main>
Кроме того, % stack runghc -- Merge
работает, но
% stack ghc -- Merge
[1 of 1] Compiling Main ( Merge.hs, Merge.o ) [Data.Aeson changed]
Linking Merge ...
ld: can't open output file for writing: Merge, errno=21 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)
Есть идеи? Я установил платформу haskell, следуя инструкциям в https://www.haskell.org/downloads / с https://www.haskell.org/platform/mac.html (ghcup).
Код https://gist.github.com/arademaker/e7ae2e1ef5225807a3e627caa61481da
Комментарии:
1. У вас случайно уже есть каталог с именем
Merge
в вашем каталоге (или что-то еще, что может вызвать конфликт имен)?2. Ох… @WillemVanOnsem, спасибо. Я так восхищен, я пытался понять платформу stack vs haskell и как работать с пакетами и т. Д. Да, я создал каталог в той же папке с тем же именем, и я забыл об этом…
3. ну, это случилось и со мной несколько лет назад :). Часто это не первая мысль, которая приходит в голову 🙂
4. Действительно,
errno=21
этоEISDIR
«каталог». С одной стороны, я радld
, что напечатал это. OTOH, он мог бы напечатать более удобочитаемое сообщение.
Ответ №1:
У меня был каталог с тем же именем в папке! Моя ошибка.