[Armadillo:00015] Re: FreeBSD 開発環境 (was: MD5 チェックサム )

Kaoru Kusachi email@hidden
2004年 5月 22日 (土) 16:28:12 JST


草地@リムネットです。

At 00:55 +0900 2004.05.22 , Yasushi SHOJI wrote:

>FreeBSD + linux エミュレータで ajの開発をするための tipとかありますか?
>私自身 FreeBSD + linuxエミュレータで aj開発をしたことがないので、もし、
>ハマリやすい場所があるなら FreeBSD userのためにまとめたいなぁ。

とりあえず、Armadillo-J を動かすのが先決でドキュメントにはまとめ
ていなかったのですが 、良い機会なのでFreeBSDユーザの方の参考に
開発環境を作成した時のメモ程度ですがまとめてみました、なおこの
時点では base.img イメージは 1.02 だったので現在では状況が変わって
いるかも知れません、FreeBSDユーザの方の参考になれば幸いです。

以下の文章は御自由に利用下さい。
++++++++++++++++++ ここから ++++++++++++++++++
Armadillo-J 開発環境 on FreeBSD

※ FreeBSD上での開発を行う際の問題点及び対策

1. 提供されている開発環境が Linux バイナリ (RedHat and debian) なので
   linux エミュレータを使わないと動かない。

   【対策】 FreeBSD で Linux バイナリの実行開発環境の導入
    ports または freeBSDパッケージで以下のインストールを行う。

    $ pkg_info | grep linux
    linux_base-7.1_7    The base set of packages needed in Linux mode
    linux_devtools-7.1_3 Packages needed for doing development in Linux mode

    ※ この時点では RedHat 7 相当のエミュレータ環境で対応、debian環境
       は未確認。

2. hermit (hermit-1.3_armadillo-6.i386.rpm) 実行バイナリが Linux 環境
   実行時に assert でエラーになってターゲット (Armadillo-J 本体) にダ
   ウンロード出来ない。

   【対策】 Linux 環境と FreeBSD の API の戻り値が異なる事が原因だった
    為、hermit のソースにパッチを入れて再コンパイル。

    ### hermit-1.3-armadillo-6/src/host/common/target.c ###
    RCS file: RCS/target.c,v
    retrieving revision 1.1
    diff -c -r1.1 target.c
    *** target.c    2004/02/12 14:18:55     1.1
    --- target.c    2004/02/13 10:31:29
    ***************
    *** 314,321 ****
    --- 314,325 ----
            assert(tc);
      #ifndef MSW
            assert(tc->portfd >= 0);
    + #ifdef LINUX
            if (tcflush(tc->portfd, TCIOFLUSH) < 0)
                    perror_xe("tcflush() on serial fd");
    + #else /* ! LINUX */
    +       tcflush(tc->portfd, TCIOFLUSH);
    + #endif /* ! LINUX */
      #else
            assert(tc->portfd != INVALID_HANDLE_VALUE);
            if (!FlushFileBuffers(tc->portfd))

    ※ FreeBSD 上の Linux エミュレーションでは tcflush() の戻り値がエ
       ラーで返って来る様なので無視する様にした。
       とりあえず hermit が動いたので詳細は調査せず :-)

3. Armaddillo-J での実行バイナリ (flat binary) の生成ツール elf2flt と
   flthdr が実行時にエラーとなって実行バイナリの作成が行えない。

   【対策】elf2flt と flthdr を FreeBSD のネイティブ実行バイナリを作成
    して対応した。

    elf2ftl と flthdr が static link されているのが原因なので uClinux
    本家サイトからソースを探しダウンロードして FreeBSD 上 (エミュレー
    タ上では無い) で FreeBSDネイティブな実行バイナリを作成して元の
    Linux バイナリと置き換え (FreeBSDのエミュレータ環境では混在したバ
    イナリも実行可能)。

    ※ binutils-2.14.tar.gz 及び elf2flt-20030816.tar.gz を使用、ただ
       しそのままではコンパイル出来なかったので少しパッチを入れて
       FreeBSD上でコンパイル及び実行出来る様にした。

    ------------------------- ここから --------------------------
    begin 644 elf2flt-patch.gz
    M'XL("''RKD```V5L9C)F;'0M<&%T8V@`S53;;MI`$'V&KYB0/`2:]email@hidden
    M"#81E1.A0-14JH06>XU7-2;RI2E_W]FU38`0594J-2M;.SYS\\R<79\'`1`/
    MR!A8%!A!E*G7#R/7KKX(398H%F"]U6KMFM6F80Y?:`R@@]:Q-`T?T#N76IT0
    M<C!&;4(SN*5K,`S03:MM6&T-#$TS1?#M)9-I($413#_K`.ZD_@&.C]0YC]4T
    M1-FUAV[_9M)M$%?-TT2-5AZ-U(C/&Q^!_7I:)email@hidden:*ZJWB@"_RA&&LC"8+
    MEG7Q[PC^'GQ'`T*>>182=)\'?E=1U%)),%^>\2A5$5<+M4+W7/B<)=GZH-=&
    M^R+MNF,\PF,ORGU&?)Z\E7K'I<3W_3:XH>BF6BI%U_!=TA\,:!35_==SOT5=
    MP".F\'A_<ENJ'0YLX7*N_7P!^@6.UC),2^N(N;8/,6'?[X4/YJ5EZF_S03?/
    MC)(3`*.[@?email@hidden/H0@][,RM+G6$?>HB4;=B!T6LP'DLZ"*]*%GC)$@&78@](
    MFM&,>_4C<$?7A0KWGLP]F?9=5T"E*%#;&4HKL:.W/>W?WSC3V<GI8/S01+WS
    MZ#B/4V%12+V"V;(HR>W_6!email@hidden>,L$AL>DI__L,8#7"MWQ=MGQD:QP[,-6IOF
    M3+(,SD%K6]J%9;[-LA>OO^*8>7%email@hidden%9+.#DM6V"/[IO5H8)BM50T
    M/*ZP3^)J"#\7*G2_I7B>0D9]EH#@/`2K!+*0P?70!KP-$IJL86_)B#email@hidden`
    MCR<E9OYIV>?PJJUI3:FK$HI:PZOMG*5M"QQW"&G^)*_!/^0MJF#15LK9;/#M
    MYNOH;C9K;E?8\-:+9QZ+RTD)&S7,-Y``Y"email@hidden*\@L%;/:TW05,F!U2TMF3Z
    5NVLMTN9U8Q%\[YW]#3EY&7O$!P``
    `
    end
    ------------------------ ここまで -----------------------

4. uClinx-dist の環境設定 make menuconfig で使用される lxdialog がコン
   パイル時にエラーになり、起動出来ない。

   【対策】Linuxエミュレータ環境の ncurses ライブラリが不足しているの
    が原因で本家 (GNUアーカイブ) よりソースをダウンロードしてライブラ
    リを追加して対応。

5. その他

    FreeBSD の Linux エミュレータ環境は /usr/compat/linux 以下に全て作
    成される為、開発は別のアカウントを作成して先に Linux バイナリが実
    行される様に PATH の設定を行った方が良い。

    ※ 誤って FreeBSD 側のバイナリ、ライブラリ等を壊すと悲惨な目にあ
       います (^^;)

    FreeBSD の ports にも ARM の開発環境が含まれているので、Linuxエミュ
    レータを使わなくても Armadillo-J のクロス開発環境は構築可能と思われ
    る、現在ぼちぼちとネイティブなクロス開発環境を構築中。

++++++++++++++++++ ここまで ++++++++++++++++++
-- 
草地 薫 (Kaoru Kusachi)                     E-Mail: email@hidden
Nakano, Tokyo, Japan.



armadillo メーリングリストの案内