お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-04-07 22:52:00

taku_s
メンバ
登録日: 2008-12-14

カーネルのコンパイル

たびたび、お世話になります。

カーネルのコンパイルにるとき、gLibcは必要なんでしょうか?
あるいは、Linux-2.6.xxの中にあるファイルだけをスタティックリンクして完結するんでしょうか?

i386の場合は、何も考えなくても、makeできると思いますが、arm用のクロスコンパイルする場合
他のアプリケーションは、arm用にコンパイルしたgLibcにリンクを通す必要があるようですが、
カーネルの場合は、どうなんでしょうか?

オフライン

 

#2 2011-04-08 21:58:49

hmatsue
アドバイザ
登録日: 2009-03-10

Re: カーネルのコンパイル

普通に考えるならglibcは必要、
ということになるかと思います。
[参考URL] http://itpro.nikkeibp.co.jp/article/Keyword/20070308/264222/

glibcに代わる「なにか」を用意して、glibcを使わずに済ませる方法は無いか、という意味であれば、すみませんがちょっと判りません。

オフライン

 

#3 2011-04-09 10:10:52

taku_s
メンバ
登録日: 2008-12-14

Re: カーネルのコンパイル

hmatsueさま
やはり、gLibcは必要ですよね

クロスコンパイル環境を作ると、/usr/arm-linux-gnueabi/libに、libc.so.6が作られたりしますが、
カーネルのコンパイル時には
make ARCH=arm CROSS_COMPILE=arm-linux- でコンパイルし、gLibcへのリンクを指定していないように思われるので
先のような質問になりました。

考えてみると、gccのsearch-dirsと arm-linux-gccのsearch-dirs は別物なので、問題なかったんですね。

ただ、クロスコンパイル環境の場合、gLibc以外にも、uClibcやdietLibcなどの候補があり、
他のLibcを使う場合、やはりuClibcなどをsearch-dirsに含めるのか、
あるいは、Makefileと同じ位置に/libがあれば優先的に的に見に行ってくれるのか
いまいちよく分かりません。

オフライン

 

Board footer

Powered by FluxBB