プロジェクト

全般

プロフィール

操作

Cygwin の GCC 840 ビルド

1.必要パッケージのインストール(Cygwin)

最小構成で初期セットアップした後、GCC をビルドするため、以下のパッケージを導入をする。

gcc-core
gcc-g++
make
binutils
libgmp-devel
libmpfr-devel
libmpc-devel
flex
bison
gawk
wget
git

2. GCC 8.4.0 のソース取得

wget https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz
tar xf gcc-8.4.0.tar.xz

3. ビルド用ディレクトリを作成

mkdir gcc-8.4.0-build
cd gcc-8.4.0-build

4. configure の実行

Cygwin で long double=80bit を使うため、特別なオプションは不要。

標準の configure で OK。

../gcc-8.4.0/configure \
  --prefix=/usr/local/gcc-8.4 \
  --enable-languages=c,c++ \
  --disable-multilib

願わくばこちらの方が良い。

../gcc-8.4.0/configure \
  --build=x86_64-pc-cygwin \
  --host=x86_64-pc-cygwin \
  --target=x86_64-pc-cygwin \
  --prefix=/usr/local/gcc-8.4 \
  --enable-languages=c,c++ \
  --disable-multilib \
  --disable-nls \
  --with-system-zlib

--build/--host/--target

Cygwin では native build でも明示した方が安全。
特に Windows 上では configure が誤判定することがあるため、
明示指定はむしろ推奨。

--disable-nls

国際化(gettext)を無効化。
GCC のビルドが軽くなり、Cygwin ではよく使われる。

--with-system-zlib

Cygwin の zlib を使う。
GCC 内部で zlib をビルドしないので高速。

--disable-multilib

Cygwin は 32bit を使わないので必須。

→ Cygwin で GCC をビルドするなら、あなたの設定は非常に良い。

5. make(長時間かかる)

make -j$(nproc)

Cygwin では fork が遅いので時間がかかるが、問題なし。

6. インストール

make install

インストール先:

/usr/local/gcc-8.4/

7. PATH の設定

.bashrc に追加:

export PATH=/usr/local/gcc-8.4/bin:$PATH

反映:

. ~/.bashrc

8. 動作確認(最重要:long double の精度)

テストコード作成

cat > /tmp/check_ld.c << 'EOF'
#include <stdio.h>
#include <float.h>

int main(void) {
    printf("sizeof(long double) = %zu\n", sizeof(long double));
    printf("LDBL_MANT_DIG       = %d\n", LDBL_MANT_DIG);
    return 0;
}
EOF

コンパイル & 実行

/usr/local/gcc-8.4/bin/gcc /tmp/check_ld.c -o /tmp/check_ld
/tmp/check_ld

結果(成功)

sizeof(long double) = 16
LDBL_MANT_DIG       = 64
→ 80bit 拡張倍精度(x87 FPU)が正しく動作

9. C++ の動作確認

echo '#include <iostream>
int main(){ long double x=1.0L; std::cout<<x<<"\n"; }' > /tmp/test.cpp

/usr/local/gcc-8.4/bin/g++ /tmp/test.cpp -o /tmp/test
/tmp/test

出力:

1

→ libstdc++ も正常。

10. Windows Terminal で Cygwin を快適に使用

Windows Terminal に Cygwin プロファイルを作成

TERM=xterm-256color を設定

vi(Vim)のカラー表示が復活

日本語フォントも綺麗に表示

11. VSCode との統合準備

VSCode のターミナルを Cygwin bash に統一

CMake Tools / CMake 拡張をインストール

CMakePresets.json を使う構成に移行

toolchain ファイルで Windows パス を使うよう修正
(VSCode の cmake は Windows ネイティブのため)

開発 次郎 さんが3日前に更新 · 3件の履歴