「インストール - GCC」の版間の差分

ナビゲーションに移動 検索に移動
282行目: 282行目:
<br>
<br>
==== H8 (システムルート無し) ====
==== H8 (システムルート無し) ====
<u>※注意</u><br>
<u>GCC 9.1以降は、共有ライブラリとしてC++(libstdc++)をビルドすると失敗するため、C言語のみの対応となる。</u><br>
<u>スタティックライブラリとしてはビルド可能であるが、その場合、例えば、<code>#inlcude <iostream></code>のインクルードができなくなる。</u><br>
<br>
<u>共有ライブラリとしてビルド不可の理由としては、ビット数を管理するソースコードファイルにおいて、</u><br>
<u><code>std::size_t</code>の配列が、H8アーキテクチャ上では<code>std::size_t</code>のビット長が短いため、配列の要素が格納できないからである。</u><br>
<u>また、C++17のメモリ管理機構において、コンパイル時の<code>static_assert</code>に失敗する。</u><br>
<br>
GCC 8.5では、GCCのMakefileに手を加えることにより、C言語およびC++言語を対応させることができる。<br>
通常、ビルドを行う場合、<code>basic_string.h</code>ファイルにおいて、<code>internal compiler error: unrecognizable insn</code>としてエラーになる。<br>
これは、C++向けライブラリをビルドするためのxgccにおいて、内部エラーが起きているからである。<br>
<u>しかし、ビルドディレクトリにあるh8300-elfディレクトリ内のMakefileファイルの526行目 <code>CXXFLAGS_FOR_TARGET</code>を<code>-g -O0</code>に変更する(最適化を無効にする)ことにより、ビルド可能となる。</u><br>
<br>
まず、[https://ftp.gnu.org/gnu/binutils/ GNUの公式Webサイト]から、Binutilsをダウンロードする。<br>
まず、[https://ftp.gnu.org/gnu/binutils/ GNUの公式Webサイト]から、Binutilsをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
323行目: 336行目:
               --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=h8300-elf \
               --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=h8300-elf \
               --enable-languages=c \
               --enable-languages=c \
               --disable-bootstrap --disable-nls --disable-shared --enable-static --enable-lto --enable-gold \
               --disable-bootstrap --disable-nls --disable-shared --enable-static --disable-libstdc__-v3 --enable-lto --enable-gold \
               --with-newlib \
               --with-newlib \
               --with-headers=/<上記でダウンロードしたNewLibのディレクトリ>/newlib/libc/include
               --with-headers=/<上記でダウンロードしたNewLibのディレクトリ>/newlib/libc/include

案内メニュー