[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pbsd-mg2] Re: cross compile environment



suz@d2.bs1.fc.nec.co.jp (Koji Suzuki) writes:
> ただいくつかコメントがあります。
> 
>   |     2. NetBSD/hpcmips固有の環境に対応するためのもの
>   | 	soft-float関係です。soft-float関係のライブラリ(libgcc.aに入るも
>   | 	の)がmakeされないとか、gccのTARGET_DEFAULTを-msoft-floatにすると
>   | 	いう類の修正です。
> 
> soft-float関係のライブラリは、arm32 を参考に libc に入れてあります。
> arm32 の方式の方が、libc との親和性が良いように思えたので、
> そうしてあります。
> 
> したがって、libgcc.a に入れるよりは、libc の方を(必要なら)修正して
> 欲しいです。

鈴木(康)さんの作業を無視したように見えたらごめんなさい。そういう意図は全
くありません。

soft-floatに関しては、何が正しいやり方なのかはまだ理解していません。

少なくとも、NetBSD 1.4を使ってcross-netbsd.tgzで作ったクロスコンパイラで
は、-msoft-floatをつけてコンパイルしたバイナリをリンクすると、dpaddなど
の関数が未解決になってしまったのです。gcc関係のソースの中身やコンフィグ
のやり方などを追いかけるのはしんどかったので、libgcc.aを作るときに
soft-float関係のライブラリを追加するようにしている他のターゲット用の
Makefileを参考に、適当に追加してみただけです。そうしたらシンボルの未解決
もなくなり、出来上がったバイナリもそれなりに動いているようだったので、取
りあえずそうしてあります。

gcc(egcs)のバージョンに起因するものなのか、gcc(egcs)のコンフィグレーショ
ンに起因するものなのか、何が悪かったのかはまだつかめていません。できたら、

	gcc(egcs)は-msoft-floatをつけるとどのようなライブラリを呼ぶか
	そのライブラリの実体はどこにあるのか
	gcc(egcs)をどのようにコンフィグするのが正しいのか

などを解説していただけると嬉しいです。

* * * * *

ところで、作業の進め方についてのポリシーですが、私は以下のように考えてい
ます。

    1. まずは一通り動くものをとにかくでっち上げる
    2. 1.で作ったものを基準点として、インプリメントの方法に問題があれば
      「正しいやり方」で修正する

最初から「正しいやり方」でやるべきであるとお考えの方もあるかとは思います
が、目の前に動くものがあるのとないのでは気合いの入り方が違うので、最短時
間で動くものをまず作るというのは結構大事だと思います。

もちろん、最初からきちんと設計しないと後で困るようなものは適当にでっち上
げればいいというわけにはいきませんが。

とにかくmakeがエラーにならずに通るようにするなどという作業は上記のような
やり方でいいと思っています。

篠原