Mac OS XでLinux zaurus crossメモ
クロスコンパイラを作らないことには始まらない!
ということで、大変でした。
書いてあることをそのままやって成功しないという、
本当に成功している人が居るのか疑問に思うことが多々。
最初、既存のライブラリを使わずに一から作ろうと思ったんですが、失敗しました。
しかし、コンパイラの互換性問題って大変ですね(苦笑)
ちなみにこのテキストはgcc 2.95.2をターゲットにしています。
■1
rpm2cpioで取り出したincludeやライブラリをファイルを$(prefix)に入れる。
/usr系は使わない方が良いと思います。デフォルトの/usr/localなども。
失敗する場合などを考慮して新しい場所を用意しましょう。
■2
GNUのsedを使う事(通常はbsd系が入ってます)
これはMac OS Xでは地味に失敗するので気をつけたいところです。
binutils 2.17は避ける事(最新版は互換性に若干問題があるようです)
これも地味に失敗するようです。
自分は2.15を使いました。
■3
$(prefix)/arm-linux/bin/
にincludeのリンクを張ること。
これは、-Bオプションで指定された所から
includeを読み込むための措置です。
これについては他に方法があるのかもしれない。
(specsファイルとかが鍵なような気がしますが…)
■4
パッチを当てる。
www.emucamp.com/boukichi/gcc_linuxzaurus.diff
libioに問題が…。
ストリームを扱うところがstructとEOF(int型)と混同するので、
定義をストリームのstructな型からlong系の型に。
■5
specsファイルをセルフ開発環境などからコピーしてくる。
場所は最初、$(prefix)/arm-linux/bin/に、
次に、make installでコピーされるものを
arm-linux-gcc -vで調べて上書き。
ここらへんは違う方法ができるんじゃないかと思うんですが…。
■6
これでHello,worldがコンパイル可能、実機で動作するようになれば、
完了です。
うちでは、次にgcc3のコンパイル&インストールです。
ある程度のパッチ(試行錯誤したので)が当たっているかもしれませんが、
--disable-sharedのみでどうにか行きました。
■7
実機でプログラムを動かすとき、libgcc.soが無いと言われます。
これは、-static-libgccオプションをつけることで解決します。
C++では若干問題がでるとか?
libgccは制限条項付きGPLであってリンク自由なので問題ないようです。
コメントを投稿