プロジェクト

全般

プロフィール

Cygwin の GCC 840 ビルド » 履歴 » バージョン 1

開発 次郎, 2026/05/16 23:11

1 1 開発 次郎
h1. Cygwin の GCC 840 ビルド
2
3
h2. 必要パッケージのインストール(Cygwin)
4
5
最小構成で初期セットアップした後、GCC をビルドするため、以下のパッケージを導入をする。
6
7
```text
8
gcc-core
9
gcc-g++
10
make
11
binutils
12
libgmp-devel
13
libmpfr-devel
14
libmpc-devel
15
flex
16
bison
17
gawk
18
wget
19
git
20
```
21
22
2. GCC 8.4.0 のソース取得
23
コード
24
wget https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz
25
tar xf gcc-8.4.0.tar.xz
26
3. ビルド用ディレクトリを作成
27
コード
28
mkdir gcc-8.4.0-build
29
cd gcc-8.4.0-build
30
4. configure の実行
31
Cygwin で long double=80bit を使うため、特別なオプションは不要。
32
標準の configure で OK。
33
34
コード
35
../gcc-8.4.0/configure \
36
  --prefix=/usr/local/gcc-8.4 \
37
  --enable-languages=c,c++ \
38
  --disable-multilib
39
5. make(長時間かかる)
40
コード
41
make -j$(nproc)
42
Cygwin では fork が遅いので時間がかかるが、問題なし。
43
44
6. インストール
45
コード
46
make install
47
インストール先:
48
49
コード
50
/usr/local/gcc-8.4/
51
7. PATH の設定
52
.bashrc に追加:
53
54
bash
55
export PATH=/usr/local/gcc-8.4/bin:$PATH
56
反映:
57
58
コード
59
. ~/.bashrc
60
8. 動作確認(最重要:long double の精度)
61
✔ テストコード作成
62
コード
63
cat > /tmp/check_ld.c << 'EOF'
64
#include <stdio.h>
65
#include <float.h>
66
67
int main(void) {
68
    printf("sizeof(long double) = %zu\n", sizeof(long double));
69
    printf("LDBL_MANT_DIG       = %d\n", LDBL_MANT_DIG);
70
    return 0;
71
}
72
EOF
73
✔ コンパイル & 実行
74
コード
75
/usr/local/gcc-8.4/bin/gcc /tmp/check_ld.c -o /tmp/check_ld
76
/tmp/check_ld
77
✔ 結果(成功)
78
コード
79
sizeof(long double) = 16
80
LDBL_MANT_DIG       = 64
81
→ 80bit 拡張倍精度(x87 FPU)が正しく動作
82
83
9. C++ の動作確認
84
コード
85
echo '#include <iostream>
86
int main(){ long double x=1.0L; std::cout<<x<<"\n"; }' > /tmp/test.cpp
87
88
/usr/local/gcc-8.4/bin/g++ /tmp/test.cpp -o /tmp/test
89
/tmp/test
90
出力:
91
92
コード
93
1
94
→ libstdc++ も正常。
95
96
10. Windows Terminal で Cygwin を快適に使用
97
Windows Terminal に Cygwin プロファイルを作成
98
99
TERM=xterm-256color を設定
100
101
vi(Vim)のカラー表示が復活
102
103
日本語フォントも綺麗に表示
104
105
11. VSCode との統合準備
106
VSCode のターミナルを Cygwin bash に統一
107
108
CMake Tools / CMake 拡張をインストール
109
110
CMakePresets.json を使う構成に移行
111
112
toolchain ファイルで Windows パス を使うよう修正
113
(VSCode の cmake は Windows ネイティブのため)