プロジェクト

全般

プロフィール

Cygwin の GCC 840 ビルド » 履歴 » リビジョン 2

リビジョン 1 (開発 次郎, 2026/05/16 23:11) → リビジョン 2/3 (開発 次郎, 2026/05/16 23:19)

h1. Cygwin の GCC 840 ビルド 

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

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

 <pre><code class="text"> ```text 
 gcc-core 
 gcc-g++ 
 make 
 binutils 
 libgmp-devel 
 libmpfr-devel 
 libmpc-devel 
 flex 
 bison 
 gawk 
 wget 
 git 
 </code></pre> ``` 

 h2. 2. GCC 8.4.0 のソース取得 

 <pre><code class="bash"> 
 コード 
 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 
 </code></pre> 

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

 <pre><code class="bash"> 
 コード 
 mkdir gcc-8.4.0-build 
 cd gcc-8.4.0-build 
 </code></pre> 

 h2. 4. configure の実行 

 <pre><code class="bash"> 
 Cygwin で long double=80bit を使うため、特別なオプションは不要。 
 </code></pre> 

 標準の configure で OK。 

 <pre><code class="bash"> コード 
 ../gcc-8.4.0/configure \ 
   --prefix=/usr/local/gcc-8.4 \ 
   --enable-languages=c,c++ \ 
   --disable-multilib 
 </code></pre> 

 h2. 5. make(長時間かかる) 

 <pre><code class="bash"> 
 コード 
 make -j$(nproc) 
 </code></pre> 

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

 h2. 6. インストール 

 <pre><code class="bash"> 
 コード 
 make install 
 </code></pre> 

 インストール先: 

 <pre><code class="text"> コード 
 /usr/local/gcc-8.4/ 
 </code></pre> 

 h2. 7. PATH の設定 

 
 .bashrc に追加: 

 <pre><code class="bash"> bash 
 export PATH=/usr/local/gcc-8.4/bin:$PATH 
 </code></pre> 

 反映: 

 <pre><code class="bash"> コード 
 . ~/.bashrc 
 </code></pre> 


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

 h3.  テストコード作成 

 <pre><code class="bash"> 
 コード 
 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 
 </code></pre> 

 h2.  コンパイル & 実行 

 <pre><code class="bash"> 
 コード 
 /usr/local/gcc-8.4/bin/gcc /tmp/check_ld.c -o /tmp/check_ld 
 /tmp/check_ld 
 </code></pre> 

 h2.  結果(成功) 

 <pre><code class="text"> 
 コード 
 sizeof(long double) = 16 
 LDBL_MANT_DIG         = 64 
 → 80bit 拡張倍精度(x87 FPU)が正しく動作 
 </code></pre> 

 h2. 9. C++ の動作確認 

 <pre><code class="bash"> 
 コード 
 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 
 </code></pre> 

 出力: 

 <pre><code class="text"> コード 
 1 
 </code></pre> 

 → libstdc++ も正常。 

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

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

 TERM=xterm-256color を設定 

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

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

 h2. 11. VSCode との統合準備 

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

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

 CMakePresets.json を使う構成に移行 

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