linux make中makefile中出现的一些问题.

1.makefile:2: * 遗漏分隔符 。 停止
2.make: 没有什么可以做的为 `modules’。
text.c文件

#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/init.h>
#include <linux/miscdevice.h>
#include <linux/types.h>
#include <linux/ioctl.h>
#include <linux/cdev.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/init.h>

#define CORE_LED (1*32 + 7)  //硬件上的一个led灯为goip1_7
#define DEVICE "led_core"
#define MAGIC_NUM 0xDB
#define MAGIC_SET_LOW _IO(MAGIC_NUM,0)
#define MAGIC_SET_HIGH _IO(MAGIC_NUM,1)

int led_open(struct inode *inode, struct file *file)
{
    int ret;
    ret = gpio_request_one(CORE_LED,
            (GPIOF_DIR_OUT|GPIOF_OUT_INIT_HIGH),"core_led");
    if(ret)
    {
        printk("Error: cannot request gpio CORE_LED. \n");
        printk("Error ret = %d but still can be manipulated. \n", ret);
    }            

    gpio_set_value(CORE_LED,1);
    return 0;

}

int led_release(struct inode *inode, struct file *filp)
{
    gpio_free(CORE_LED);
    printk("GPIO LED dev release. \n");
    return 0;
}

long led_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
    switch(cmd)
    {
        case MAGIC_SET_LOW:
            printk("GPIO LED set low.\n");
            gpio_set_value(CORE_LED,0);
            break;
        case MAGIC_SET_HIGH:
            printk("GPIO LED set high.\n");
            gpio_set_value(CORE_LED,1);
            break;
        default:
            printk("ERROR unvalid cmd.\n");
            break;    
    }
    return 0;
}

struct file_operations led_fops ={
    .owner             = THIS_MODULE,
    .open              = led_open,
    .release         = led_release,
    .unlocked_ioctl = led_ioctl,
};

struct miscdevice led_dev ={
    .minor        = MISC_DYNAMIC_MINOR,
    .name        = DEVICE,
    .fops        = &led_fops,
};

static int led_init(void)
{
    int ret;
    ret = misc_register(&led_dev);
    if (ret)
    {
        printk("Error: cannot register misc. \n");
        return ret;
    }
    printk("misc-register %s\n",DEVICE);
    return 0;
}

static void led_exit(void)
{
    misc_deregister(&led_dev);
    printk("misc-deregister %s\n",DEVICE);
}

module_init(led_init);
module_exit(led_exit);
MODULE_LICENSE("GPL");

在该目录下建立Makefile文件

ifneq ($(KERNELRELEASE),)
obj-m := zyr-hello.o
else
KDIR :=/home/zyr/Source_code/linux-3.14.65/
all:
    make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
clean:
    rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
endif

出现上面的两个原因是因为复制makefile的时候格式出现错误,把有空格的地方需要tab键进行空格!

参考:http://blog.163.com/liuxin_arm/blog/static/18329142320138275217364/
https://www.cnblogs.com/BigOBlue/p/7071476.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值