[Suzaku:00726] Re: デバイスモジュールのmakeについて

email@hidden
2007年 1月 12日 (金) 16:29:08 JST


大川様

お世話になっております。 伊藤です。

大川様の御回答に基づき色々と修正/見直したところ、おかげさまでデバイスモジュールができあがり、
尚且つinsmod、rmmodも確認できました。
大変助かりました。

色々とありがとうございました。 

また何かあればよろしくお願いいたします。

-----Original Message-----
From: email@hidden [mailto:email@hidden] On Behalf Of Tetsuya OHKAWA
Sent: Friday, January 12, 2007 2:36 PM
To: SUZAKU general discussion list
Subject: [Suzaku:00725] Re: デバイスモジュールのmakeについて

大川です。

email@hidden wrote:
> 大川様
>
> お世話になっております。 伊藤です。
>
>   
>> SUZAKU用にクロスコンパイルされていないですね。 
>>     
> についてですが、dpkgコマンドでクロス開発パッケージのインストールは確認しています。
> また、gccでコンパイルしていますし...大変すみませんが、何を持ってクロスコンパイル
> されていないと言われるのか教えて頂けませんか?
>   
SUZAKU-V 用のバイナリファイルを作成するには、
powerpc-linux-gcc という名のコマンド(ファイル)の gccコンパイラを使用し
クロスコンパイルする必要があります。
伊藤様のコンパイルエラーログをみると powerpc-linux-gcc ではなく、
gcc -O2 ... となっております。これは、作業用PCにインストールされている
gcc コンパイラでコンパイルされていると推察されます。

> また、makefileは『SUZAKU スターターキットガイド (Linux開発編)』、「7.デバイスドライバ開発」
> 「7.2.2. サンプルドライバモジュールの Makefile」を参考にし以下の様にしました。(一部変更あり)
> ##makefile#################################
> ifndef ROOTDIR
> ROOTDIR=/home/somebody/uClinux-dist-20051110-suzaku6 <-------変更
> endif
> PATH := $(PATH):$(ROOTDIR)/tools
> UCLINUX_BUILD_USER = 1
> include $(ROOTDIR)/.config
> LIBCDIR = $(CONFIG_LIBCDIR)
> include $(ROOTDIR)/config.arch
>
> OBJS = dd.o	<---------変更
> #########################
> CFLAGS = -Wal  <-------追加
> CC = gcc     <-------追加
>   

上記、CFLAGS と CC は追加していただかなくて結構です。
この指定があるため、作業用PC用にコンパイルしようとしています。

SUZAKU-V用にコンパイルするための CCおよびCFLAGSは、
ROOTDIRで指定したディストリビューション tree の中で
定義された値を使用しなければなりません。
このMakefileは、ROOTDIRを適切に設定してもらえば、
CC, CFLAGSは適切に設定されるようになっています。
但し、ROOTDIRで指定したuClinux-distで
予め、SUZAKU-V用にビルドしておいてください。

> #########################
> all: $(OBJS)
>
> clean:
>     -rm -f $(OBJS)
>
> %.o: %.c
>   $(CC) -c $(CFLAGS) -o $@ $<
> ########################################
>
> ##ソース#################################
> #define __KERNEL__
> #define	MODULE
> #include	<linux/module.h>
> #include	<linux/kernel.h>
> #include	<linux/fs.h>
> #include	<linux/string.h>
> #include	<asm/uaccess.h>
>
> static int dd_open(struct inode *inode, struct file *fp) {
>     printk(“dd_open\n”);
>     return 0;
> }
> static struct file_operations fops = {
>     open = dd_open,
> };
> int init_module(void) {
>     int ret;
>     ret = register_chrdev( 60, "dd", &fopes);
>     printk( KERN_INFO "dd Module Install\n" );
>     return 0;
> }
>
> void cleanup_module(void) {
>     unregister_chrdev(60, "dd");
>     printk( KERN_INFO  "dd Module Uninstall\n" ); } 
> #########################################
>
> 初歩的で申し訳ありませんが、よろしくお願いいたします。
>   

_______________________________________________
suzaku mailing list
email@hidden
http://lists.atmark-techno.com/mailman/listinfo/suzaku




suzaku メーリングリストの案内