Forums: Help (Thread #512)

カーネルのコンパイル (2002-05-23 15:08 by hirotada #769)

はじめまして。レベルの低い質問で恐縮なのですが、カーネルのコンパイルで困っています。
arch/h8300/kernel/ksyms.c の struct symbol_table arch_symbol_table を定義しているところで initialization of zero-length array before end of structure のエラーが出てしまいコンパイル出来ずにいます。同じような経験をした、あるいは解決方を御存知の方はいらっしゃらないでしょうか。
binutils 2.11.2 + gcc 3.0.4でWindows2000+CygwinとDebian Linuxのどちらでやってもこうなってしまいます。

Reply to #769×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: カーネルのコンパイル (2002-05-31 00:19 by ochiai #855)

gcc-3.0だからではないでしょうか。
私はgcc-2.95.3でソースから全部コンパイルしましたがうまく構築できまたよ。
パッチもgcc-2.95.x用だったと思います。
Reply to #769

Reply to #855×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: カーネルのコンパイル (2002-06-03 22:20 by ysato #874)

eCosの更新が終わったので、こっちに復帰します。
亀な発言ですね。ごめんなさい。

問題の部分は、このパッチで解決出来ると思います。
環境がないので、未テストです。

--- arch/h8300/kernel/ksyms.c.old Mon Apr 29 20:19:40 2002
+++ arch/h8300/kernel/ksyms.c Mon Jun 3 21:45:24 2002
@@ -17,7 +17,7 @@

extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(elf_fpregset_t *);
-
+#if 0
static struct symbol_table arch_symbol_table = {
#include <linux/symtab_begin.h>
/* platform dependent support */
@@ -45,10 +45,10 @@

#include <linux/symtab_end.h>
};
-
+#endif
void arch_syms_export(void)
{
- register_symtab(&arch_symbol_table);
+ /* register_symtab(&arch_symbol_table); */

/*our_syms_export()*/
}

ただ、linux 2.0.xのカーネルが、GCC 3.0.4で問題なくコンパイル出来る保証
がないので、他のところで引っかかる可能性は十分にあります。

以下、余談
2.95.3でも新しすぎなんですが、今のところ問題が起きていないので、気にしな
いで使ってます。
時期的には、2.7.2.3辺りがちょうどいいんですが、クロスコンパイラとしての
安定性が(?)だったので、その時の最新だった2.95.3を使ってます。
(あれ、3.0出てたっけ?)

そういえば、モジュールは使えないので、このテーブルは意味がないのか。
組み込まれないようにするか。

Reply to #769

Reply to #874×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: カーネルのコンパイル (2002-06-05 19:12 by hirotada #877)

言い出しっぺのレスポンスが悪くて大変申し訳ありません。
gcc-2.95.3にしたら(この部分は)通るようになりました。ユーザランドの構築方法のドキュメントでgcc-3.0.4を使っていたのでカーネルも3.0.4でいけるのかと勘違いしていました。確かにLinux2.0.xのカーネル自体3.0.4でコンパイルできるかどうかはかなり怪しそうですね。
せっかくパッチを作っていただいたので後で試してみます。ありがとうございました。
Reply to #769

Reply to #877×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login