インストール方法(結論)
せっかちなアナタに向けて。インストール済みのものは省いてね。
sudo apt update
sudo apt gcc
sudo apt g++
sudo apt make
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
sudo apt install libgmp3-dev
# Main.hs ファイルを作成する(省略)
ghc Main.hs # Main.hsファイルをコンパイル
./Main # 実行ファイルMainを実行
GHCupをインストールするまでで良ければコレで終わり。
前提
動作環境:WSL2(Ubuntu22.04)
curlがインストールされていること(curl --versionで確認)

後述するがCコンパイラ、g++、makeも必要だった。結論としては下記コマンドでインストールした。
sudo apt update
sudo apt gcc
sudo apt g++
sudo apt make
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
Haskell環境構築指針
参考:Haskellの環境構築2023
下記コマンドを実行。何度か入力を聞かれるので、Enter押下→1回目はp、2回目はy、3回目はy→Enter押下、にした。
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
コマンド補足
curl --proto '=https':curl - How to use いわく、httpsプロトコルだけ許可する、の意味
--tlsv1.2:curl - How to use いわく、TLSサーバー接続時にバージョン1.2以降を指定する、の意味
-sSf:curl - How to use いわく、-sがsilend mode(進捗とかエラーメッセージの非表示)、-Sがshow error の略。silent mode 使用時にエラー情報は表示する。-fはfail、どこで失敗したか教えてくれ、みたいな感じらしい。
インストール(失敗)+失敗原因1
試しにghcup listコマンドを実行すると command not found と。失敗したことがわかる。

ログを確認してみた。赤枠にある通り、Cコンパイラがないことが原因らしい。

gcc(GNU Compiler Collection)をインストールすれば良さそうなので試してみる。

このコマンドでインストールできそう。aptのアップデートを忘れずに。
sudo apt update
sudo apt install gcc
インストール(失敗)+失敗原因2
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
g++も必須とのこと。インストールコマンドは・・・

ですよね。じゃあインストールしてっと。
sudo apt install g++
インストール(失敗)+失敗原因3
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
sudo apt install make
インストール(成功)
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
忘れずに、環境変数を再読み込みする。↑の画像に書いてある通り。
source /home/[ユーザ名]/.ghcup/env
Haskellを試す
それが終わったら ghci コマンドから対話環境を試してみる。
参考:Haskellの環境構築2023
product [1..5] で5の階乗を計算してもらう。
:quit で対話環境を抜ける。

ソースコードを書いて試してみる。Main.hsファイルを作成する。
main = do
print "Hello, World!"
ghc Main.hs
下記サイトいわく、cannot find -lgmp は gmpがライブラリにないですよ、という意味らしい
参考:[linux]コンパイル時に「ld: cannot find -l」となるときの解決方法
下記サイトでは、Ubuntuではsudo apt-get install libgmp3-devを実行すればいいよ、とのこと。
ただ、情報が古いのでライブラリ名を確認してみる。
参考:Stack Overflow - /usr/bin/ld: cannot find -lgmp
また、インストール済みだがシンボリックリンクの問題でエラーが出ているパターンも考えられる。
参考:makeするとライブラリが入っているのに /usr/lib/ld: cannot find と怒られる問題
ライブラリがインストールされているか確認してみる。

検索にはヒットしたが、先ほど登場したライブラリとは異なるようだ。
ライブラリが同名で存在するか確認してみる。
sudo apt search gmp
あったのでインストール。
sudo apt install libgmp3-dev
インストールできたことを確認。正直よくわかってないけど増えてる。

もう一度試してみる。
まずghcコマンドでコンパイル。
ghc Main.hs
エラーが表示されなかったので ls してみる。実行ファイルMain が作成されていることを確認。
実行ファイルMain を実行してみる。

参考サイト一覧
Haskellの環境構築2023
[linux]コンパイル時に「ld: cannot find -l」となるときの解決方法
Stack Overflow - /usr/bin/ld: cannot find -lgmp
makeするとライブラリが入っているのに /usr/lib/ld: cannot find と怒られる問題








