haskell-jp / beginners #24 at 2024-03-19 20:03:58 +0900

パズルマン
Haskellの環境構築について質問させていただきたく思います。
https://zenn.dev/mod_poppo/articles/haskell-setup-2023
主にこちらの記事を参考に、MacBook(CPUはIntel)にHaskellの環境構築をしています。GHCのダウンロード中にCコンパイラが見つからないという趣旨のエラーが出ました。記事ではCコンパイラをインストールせよとのことでしたが、Cコンパイラのインストールはできているはずなので原因がよくわかりません。再インストールなど色々試してみましたが現状インストールができていないといった状況です。
コンピュータについて詳しくないので基本的なことをできていないかもしれません。Haskellと直接関係ない質問かもしれませんが、アドバイスをいただきたく思います。
実際のエラーメッセージをここに貼っていただくことはできますか?
パズルマン
こちらになります。

[ Info ] downloading: as file /Users/(name)/.ghcup/cache/ghcup-0.0.8.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 386k 100 386k 0 0 1146k 0 --:--:-- --:--:-- --:--:-- 1173k
[ Info ] Upgrading GHCup...
[ Info ] downloading: as file /Users/(name)/.ghcup/tmp/ghcup-e0f08df322f91a51/ghcup
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27.6M 100 27.6M 0 0 7385k 0 0:00:03 0:00:03 --:--:-- 7398k
[ Info ] verifying digest of: ghcup
[ Warn ] ghcup is not in PATH! You have to add it in order to use ghcup.
[ Info ] Successfully upgraded GHCup to version 0.1.22.0

System requirements
Note: On OS X, in the course of running ghcup you will be given a dialog box to install the command line tools. Accept and the requirements will be installed for you. You will then need to run the command again.
On Darwin M1 you might also need a working llvm installed (e.g. via brew) and have the toolchain exposed in PATH.
Press ENTER to proceed or ctrl-c to abort.
Installation may take a while.


[ Info ] verifying digest of: ghc-9.4.8-x86_64-apple-darwin.tar.xz
[ Info ] Unpacking: ghc-9.4.8-x86_64-apple-darwin.tar.xz to /Users/(name)/.ghcup/tmp/ghcup-7b2cdc1259bcfd78
[ Info ] Installing GHC (this may take a while)
[ ghc-configure ] checking whether ld64 requires -no_fixup_chains... yes
[ ghc-configure ] checking whether ld64 requires -no_fixup_chains... yes
[ ghc-configure ] checking C++ standard library flavour... libstdc++
[ ghc-configure ] checking for linkage against 'stdc++'... failed
[ ghc-configure ] checking for linkage against 'stdc++ supc++'... failed
[ ghc-configure ] configure: error: Failed to find C++ standard library
[ Error ] [GHCup-00841] Process "sh" with arguments ["./configure",
[ ... ] "--prefix=/Users/(name)/.ghcup/ghc/9.4.8",
[ ... ] "--disable-ld-override"] failed with exit code 1.
[ Error ] Also check the logs in /Users/(name)/.ghcup/logs
"ghcup --metadata-fetching-mode=Strict --cache install ghc recommended" failed!

よろしくお願いします。
C++標準ライブラリーがlibstdc++と判定されているのが奇妙ですね。macOSの標準はlibc++だと思いますが。`gcc --version` と g++ --version は何を出力しますか?
パズルマン
以下のようになりました。
~ $ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.27.3)
Target: x86_64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
~ $ g++ --version
g++ (Homebrew GCC 13.2.0) 13.2.0
Copyright (C) 2023 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.
g++ コマンドの参照先はご自身で入れ替えましたか?それともHomebrewが勝手に?
パズルマン
競技プログラミングでC++を使っているのですが、その環境を構築する際に変更したかもしれません。
競プロということは、 <bits/stdc++.h> を使えるようにするためですかね。まあともかく、`clang++` はmacOS標準のC++コンパイラーを指したままの可能性が高いので、ghcupの実行時に環境変数 CXX=clang++ を設定するとうまく行くかもしれません。
パズルマン
~ $ CXX=clang++ curl --proto '=https' --tlsv1.2 -sSf | sh
このようなコマンドを実行すれば良いのでしょうか。このコマンドを実行するとおそらく先ほどのものと同様のエラーが出てしまいました。
[ Info  ] downloading:  as file /Users/(name)/.ghcup/cache/ghcup-0.0.8.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
[ Info  ] Upgrading GHCup...
[ Warn  ] No GHCup update available

System requirements 
  Note: On OS X, in the course of running ghcup you will be given a dialog box to install the command line tools. Accept and the requirements will be installed for you. You will then need to run the command again.
On Darwin M1 you might also need a working llvm installed (e.g. via brew) and have the toolchain exposed in PATH.
Press ENTER to proceed or ctrl-c to abort.
Installation may take a while.


[ Info  ] verifying digest of: ghc-9.4.8-x86_64-apple-darwin.tar.xz
[ Info  ] Unpacking: ghc-9.4.8-x86_64-apple-darwin.tar.xz to /Users/(name)/.ghcup/tmp/ghcup-014bb208e42b7a5e
[ Info  ] Installing GHC (this may take a while)
[ ghc-configure ] checking whether ld64 requires -no_fixup_chains... yes
[ ghc-configure ] checking whether ld64 requires -no_fixup_chains... yes
[ ghc-configure ] checking C++ standard library flavour... libstdc++
[ ghc-configure ] checking for linkage against 'stdc++'... failed
[ ghc-configure ] checking for linkage against 'stdc++ supc++'... failed
[ ghc-configure ] configure: error: Failed to find C++ standard library
[ Error ] [GHCup-00841] Process "sh" with arguments ["./configure",
[ ...   ]                              "--prefix=/Users/(name)/.ghcup/ghc/9.4.8",
[ ...   ]                              "--disable-ld-override"] failed with exit code 1.
[ Error ] Also check the logs in /Users/(name)/.ghcup/logs
"ghcup --metadata-fetching-mode=Strict --cache install ghc recommended" failed!
shの直前にCXX=clang++ですね。
パズルマン
無事インストールできました。ここまで丁寧に教えていただきありがとうございました。