3754|4

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于 ppc-linux-gcc 内核2.6驱动Makefile问题 在线等 [复制链接]

大家好,我碰到关于ppc-linux-gcc 内核2.6驱动Makefile问题,我在linux能编译过简单的hello驱动模块,但移植到ppc-linux-gcc 内核2.6上就不行,请大家给于帮助。谢谢,下面是我的代码以及makefile。
// hello.c
#include
#include
#include

static int hello_init(void)
{
    printk(KERN_ALERT "Hello, world\n");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT "Goodbye, hello\n");
}

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");

# linux 下Makefile
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build

obj-m := hello.o

all :
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD)

.PHONY : clean
clean :
        rm -rf .*.cmd *.mod.c *.o *.ko .tmp*

# ppc-linux-gcc 下的makefile
PWD := $(shell pwd)

KERNEL_SRC = /opt/eldk/ppc_4xxFP/usr/src/linux-2.6.19.2

obj-m := hello.o

all :
        $(MAKE) -C $(KERNEL_SRC) SUBDIRS=$(PWD) modules 2>&1 | tee make.out

.PHONY : clean
clean :
        rm -rf .*.cmd *.mod.c *.o *.ko .tmp*

最新回复

嗯,这是2.6内核的是吧?我去试一试。谢谢!  详情 回复 发表于 2007-9-25 11:40
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我认为编译器要指定为交叉编译的那个gcc
本来是使用默认的gcc,所以能够通过
另外,还需要重新包括交叉编译的内核库文件
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我是有导入的啊!
export CROSS_COMPILE=ppc_4xxFP-
export PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin
但还是不行的!苦恼。。。。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
交叉编译最好自己写Makefile,不用内核的Make -module

以前写的一个Makefile,你改一下MOD和交叉编译链


CROSS_COMPILE=/home/guys/starwave-ppc/staging_dir_powerpc/bin/powerpc-linux-uclibc-

CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld
RM = rm

KMOD = mypcf8563
INC = myi2c

LINUX = /home/guys/starwave-ppc/build_powerpc/linux

SYS_INC = /home/guys/starwave-ppc/staging_dir_powerpc/lib/gcc/powerpc-linux-uclibc/3.4.6/include

CINCS = -I . -I include -I inc -I $(LINUX)/include -I $(LINUX)/arch/ppc \
        -I $(LINUX)/arch/ppc/include

CFLAG = -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
                 -fno-strict-aliasing -fno-common -ffreestanding -O2 \
             -fomit-frame-pointer -Iarch/ppc -msoft-float -pipe -ffixed-r2 \
                 -mmultiple -mstring -Wa,-maltivec -Wdeclaration-after-statement

DFLAGS = -DMODULE -DKBUILD_BASENAME=$(KMOD) -DKBUILD_MODNAME=$(KMOD)

CFLAGS = -m32 -Wp,-MD,.$(KMOD).o.d \
                 -nostdinc -isystem $(SYS_INC) \
                 -D__KERNEL__ $(CINCS) $(CFLAG)

SRCS = $(KMOD).mod.o $(KMOD).o $(INC).o

OBJS = $(SRCS)

all: $(KMOD)
        @echo "Look for $<.ko please"

%.o: %.c
        $(CC) $(CFLAGS) $(DFLAGS) -c -o $@ $<

$(KMOD): $(SRCS)
        $(LD) -m elf32ppc -r -o $@.ko $(KMOD).mod.o $(KMOD).o $(INC).o

clean:
        $(RM) -f $(OBJS) *.o *.ko
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
嗯,这是2.6内核的是吧?我去试一试。谢谢!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表