论坛: 帮助论坛 (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のどちらでやってもこうなってしまいます。

回复到 #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.) 登录

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

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

回复到 #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.) 登录

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出てたっけ?)

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

回复到 #769

回复到 #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.) 登录

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でコンパイルできるかどうかはかなり怪しそうですね。
せっかくパッチを作っていただいたので後で試してみます。ありがとうございました。
回复到 #769

回复到 #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.) 登录