Ubuntu日本語フォーラム
ログインしていません。
はじめまして。plaと申します。
現在、カーネルモジュールを作りたいと考えているのですが、
どうしてもサンプルコードをコンパイルさせることが出来ませんでした。
自分ではどうにもならなくなってしまったので、ここにて質問させてください。
以下のサイトを参考にし、サンプルコードを書きました
http://opentechpress.jp/kernel/03/10/26/1026229.shtml
http://uguisu.skr.jp/algo/device.html
仕様したサンプルコードは2番目のサイトのものを、Makefileもそのままコピーさせていただきました。
しかし、makeを実行すると、莫大な数の以下のようなエラーが出てしまいます。
/usr/src/linux-headers-2.6.20-15-generic/include/asm/string.h:326: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/src/linux-headers-2.6.20-15-generic/include/asm/string.h:331: error: expected declaration specifiers or ‘...’ before ‘size_t’
/usr/src/linux-headers-2.6.20-15-generic/include/linux/bitmap.h: In function ‘bitmap_subset’:
/usr/src/linux-headers-2.6.20-15-generic/include/linux/bitmap.h:229: error: ‘BITS_PER_LONG’ undeclared (first use in this function)
/usr/src/linux-headers-2.6.20-15-generic/include/linux/bitmap.h: In function ‘bitmap_empty’:
/usr/src/linux-headers-2.6.20-15-generic/include/linux/bitmap.h:237: error: ‘BITS_PER_LONG’ undeclared (first use in this function)
CentOS上で同じものを試すと成功しました。
何かubuntuでは特別なことが必要なのでしょうか?
それとも根本的な間違いを犯しているのでしょうか?
どうかよろしくお願いします。
オフライン
回答ではないのですが少々。
類似のエラーが2.6.20系のカーネルのソースツリーに依存したソフトのビルドなどで出ているようですね。
vmware用のカーネルモジュールなどで障害が出ていたようです。ubuntuに限った話では無く、Fedoraなどでも出ています。たとえばこんな感じで。
http://fun.poosan.net/sawa/index.php?UID=1174765949
CentOSで出なかったのは、おそらくカーネルのリビジョンが違うからかと。
vmwareでの回避策は提示されているようですが、ご指摘のサンプルコードについてどういう対処をすればよいかまでは私もちょっと判りません。
オフライン
手元のEdgy環境で試してみたところ、特に問題なくコンパイルできてしまいました。
Feistyではまだ試していませんが、"(first use in this function)"と言われているので、
何か足りないものがありそうです。
$ sudo apt-get build-dep linux-image-`uname -r`
した後に試すとどうなるでしょうか。
オフライン
>>gmax様
>>hito様
ご返信ありがとうございます。
こちらの環境を書き込むのを忘れていました。申し訳ありません。
ubuntu feisty 2.6.20-15-generic
gcc バージョン 4.1.2
を使用してます。
edgyからfeistyに上げたときに、確かにvmmonのコンパイルが成功せずに多少修正しました。
関連があったのでしょうか・・・
#apt-get build-dep linux-image-'uname -r'
を行った後、makeしましたがやはり同様(大量の)のエラーが出てしまいます。
オフライン