kernel c多个函数定义错误

时间:2016-04-02 10:23:48

标签: android c compiler-errors linux-kernel

我正在尝试为我的Android设备编译内核 不幸的是,我遇到了这个编译错误并且坚持了它

编译说:

drivers/dpram/built-in.o:(.bss+0x2815c): multiple definition of `pm_dev'
drivers/net/built-in.o:(.bss+0x1ac4): first defined here

在drivers / dpram.c中有:

struct device *pm_dev;

    pm_dev = device_create(sec_class, NULL, 0, NULL, "pm");
    if(IS_ERR(pm_dev))
        pr_err("Failed to create device(pm)!\n");
    if(device_create_file(pm_dev, &dev_attr_info) < 0)
        pr_err("Failed to create device file(%s)!\n", dev_attr_info.attr.name);
    if(device_create_file(pm_dev, &dev_attr_power_down) < 0)
        pr_err("Failed to create device file(%s)!\n", dev_attr_power_down.attr.name);

并在drivers / net / wireless / bcmdhd / bcmsdh_linux.c中有:

struct device *pm_dev;

    if (!device_init_wakeup(dev, 1))
        pm_dev = dev;

    if (pm_dev) {
        device_init_wakeup(pm_dev, 0);
        pm_dev = NULL;
    }

我目前正试图解决这个问题但是还不能

1 个答案:

答案 0 :(得分:1)

错误是由于

引起的
table(blue$shade, blue$Response)

是C中的定义。它定义了一个指向结构struct device *pm_dev; 的指针,它的名称是device。不允许多次定义变量,因此您应该在所有其他源文件中将pm_dev声明为 extern ,而只是在实际定义它的文件中。

声明(S):

pm_dev

单一定义:

extern struct device *pm_dev;