【问题标题】:How to fix error: implicit declaration of function ‘setup_timer’如何修复错误:函数“setup_timer”的隐式声明
【发布时间】:2019-03-25 08:18:06
【问题描述】:

尝试为usb-audio card Line6 UX2编译linux核心模块。 从 repo 获取代码并尝试制作。回购没有./configure

产生错误:

line6linux-code-r1108/driver/trunk/driver.c:169:2: error: implicit declaration of function ‘setup_timer’; did you mean ‘del_timer’? [-Werror=implicit-function-declaration]
  setup_timer(timer, function, data);
  ^~~~~~~~~~~
  del_timer

C 函数 setup_timer() 在 linux linux-headers 包中声明。目前是 linux-headers-4.18.0-16 当然是安装在默认位置/usr/src/

产生错误的代码(driver.c):

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/timer.h>
#include <linux/export.h>
#include <linux/slab.h>
#include <linux/usb.h>

#include <sound/core.h>
#include <sound/initval.h>

#include "capture.h"
#include "driver.h"
#include "midi.h"
#include "playback.h"

... some code here

/*
    Setup and start timer.
*/
void line6_start_timer(struct timer_list *timer, unsigned long msecs,
               void (*function)(unsigned long), unsigned long data)
{
    setup_timer(timer, function, data); // <-- string 169
    mod_timer(timer, jiffies + msecs_to_jiffies(msecs));
}
EXPORT_SYMBOL_GPL(line6_start_timer);

显然编译器找不到 linux 头文件。我该如何解决?

同样基于 INSTALL 文件,驱动程序是为内核版本 linux-headers-2.6.x 编写的,现在是 4.18.0-16。

更多来自 INSTALL:对于其他发行版,请查阅文档以了解您必须安装哪个包。

一切都丢失了?

操作系统 Ubuntu 18.10 Linux 4.18.0-16-generic #17-Ubuntu SMP Fri Feb 8 00:06:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

【问题讨论】:

  • 你确定你真的需要构建这个驱动吗?我认为 Ubuntu 在其 linux-module-extra 软件包中包含一个预构建的驱动程序,这些驱动程序作为“通用”内核的依赖项安装。内核配置选项为 CONFIG_SND_USB_TONEPORT,模块名为“snd-usb-toneport.ko”。
  • @Alex 你编译这个驱动了吗?如果是,请分享更改后的代码。我正在尝试在 linux mint 上将 UX1 与我的吉他一起使用
  • @IanAbbott line6 音频接口有问题。输出声音很好,但是当我插入吉他时 - 没有任何信号。在我安装驱动程序之前,Windows 中的情况相同

标签: ubuntu makefile compilation linux-kernel include


【解决方案1】:

在较新版本的 Linux 内核中,setup_timer 函数称为timer_setup

请注意,回调函数的类型在重新发布的版本中已更改。现在回调接受指向 timer_list 结构本身的指针。

在这篇 LWN 文章中查看更多信息:https://lwn.net/Articles/735887/

【讨论】:

  • 顺便说一句,timer_setup 在内核 4.14 中被添加,setup_timer 在内核 4.15 中被删除。
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 2013-03-20
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多