Cygwin
  Cygwin って何
  主要な話題
    Cygwin に特有
    Unix 一般
  Netinstaller
    流れ
      Download Folder
      setup.exe を起動
      setup.exe の操作
    Download Folder
      新規作成
      新しいフォルダ
      Download
    全てを選ぶ
  Hello メモ帳
  cc
  H8/300 Cross
    パッケージ
      binary
      pkgsrc
    使い方
      準備
    gcc
      as
    objdump
    objcopy
    ld
    readelf
    蛇足
  pkgsrc
    bootstrap
      既製品を利用する
      枠を用意する
      自分で作る
      bmake
      既製品を作る
  sudo
    特権作業
    Cygwin の場合
  管理者として実行
    文字化け
  sshd
URL

Sofware -> Cygwin
Last Update: "2014/01/30 12:19:30 makoto"

H8/300 Cross

Hitachi の 8 bit Micro ComputerH8 がある。 といっても、今は製造しているとすると、 ルネサステクノロジー ルネサス エレクトロニクス かも知れない。
このマイクロコンピュータのプログラムを Cygwin 上でコンパイルする 時に必要となる gcc と binutils を準備する方法を調べて見る。
gcc
GNU Compiler Collection, コンパイラ の集まり。C C++ Fortran Java 等がある。 今回はこの中の C だけを使います。C で書いたプログラムを CPU で実行出来る形に翻訳 (compile) します。
binutils
実は上記 gcc は C をアセンブリ言語に翻訳する。 そのアセンブリ言語で書かれたものを機械語にするのがアセンブラ。 そのアセンブラと、関係するいくつかの道具を含んでいるのが binutils。 その中でも、特にリンカ (ld) は、複数のコンパイル済の機械語を、実行出来る形式に つなぐ働きをするので大変重要。単一の時にも使う

ただ、実際には gcc を起動すると、中で自動的にアセンブラ (gas)を起動するので、 普通は、意識しなくても使える

パッケージ

Cygwin には限らないが、このような道具を用意する時に、手作りのように、 一つ一つ自分で構築 している方法 (野良ビルドと呼ぶ人もいる)と、既製のパッケージ システムを使う方法があります。

どちらが簡単かは、何で慣れているかにもよるので一慨には言えません。 とりあえず NetBSD 由来の pkgsrc の方法を先に試すことにします。そのためには pkgsrc のための準備が必要です。 それを、 bootstrap の説明 に用意しました。

binary
(上記 bootstrap は完了しているとして)
pkgsrc を利用して設置する方法には、実は何通りかあります
pkg_add
既に出来ているものがあるので(ある時には)、加える (pkg_add) だけです
一例として、 加える binary package が置いてある位置 (PATH) を環境変数の PKG_PATH に設定した上で (特権の窓で) .. (次の一部に以前記述誤りがありましたのでで示した訂正があります。申訳けありません)
export PKG_PATH=http://www.ki.nu/~makoto/cygwin64/packages/All pkg_add package_name
します。今回は package_name に cross-h8300-elf-gcc と指定します。
自分の機械に何が入っているかは pkg_info で確認出来ます。
もし pkg_add not found のようなことを言われたら PATH に /usr/pkg/sbin が入っているか確認して下さい。/usr/pkg/sbin/pkg_add が本当にない時には bootstrap の説明に戻って下さい。
pkgin
上記 pkg_add よりももう少し 賢い方法です
pkgin だけは、上の pkg_add で加えておいて、その後に pkgin help とやったりします
pkgsrc
文字通り src から自分で作ります。 これは次の項目に説明します。
(そんな説明をされても) 初めてだと、「何が何だか分らない」かも知れません。
  1. 実際にはこれら pkg_add, pkgin, pkgsrc は混ぜて使えます
  2. 自分が必要とする package を追加するのに、
    • (もし binary package が用意してあれば) pkg_add で済みます。
    • もし (誰も) binary package が用意していないなら、自分で pkgsrc から make package-install で追加します
  3. ただし cygwin(64) では「用意してあることは少ない」です。 ここの文脈で言えば、用意してあるのは h8300-elf-gcc と、 それに必要なものだけです。
pkgsrc
(ここの部分は 上記 binary の項目の中の pkg_add を使った時には不要です)
別の画面の bootstrap と、関連して 特権作業 を見て、前者の bootstrap の方はその通り作業をします。 その上で、(簡便法として) Cygwin terminal を右クリックで「管理者として実行」を選んで、 特権の窓を開けて、その中で、 もし PATH の設定がまだなら PATH を設定してから、
# export PATH=/usr/pkg/bin:/usr/pkg/sbin:${PATH}
次のように入力します。
# cd /usr/pkgsrc/cross/h8300-elf-gcc34 ; bmake package
実は、この方法は、手元で確認したところ、(少なくとも Win7 Pro SP1 (64bit) では) 最後に小さな問題があるかも知れません。32bit では不要らしいです。

二つの OS で違いが出たのは、64 bit 側は Cygin 設置を最少にしている。 32 bit 側はいろいろ多く、としているので thread library の有無に変化があるのかも知れない。

これは調査中です。次の変更をすると通過出来るかと思います。

% cd /usr/pkgsrc/ % patch -s -p0 < gcc34-3.4.6.diff
Last Update: Sat, 05 Jul 2014 02:17:03 GMT 1.66 2008/03/08