我经常运行 Ubuntu更新管理器 ,
之后每次我都需要重新make
安装电视调谐器驱动程序(就像这里描述的一样)
但那时,make
会因错误而停止:
以下错误消息是从法语翻译而来的
$ make
make -C /lib/modules/3.2.0-53-generic-pae/build M= modules
make[1]: entering in folder « /usr/src/linux-headers-3.2.0-53-generic-pae »
make[2]: *** No rule to build the target « arch/x86/tools/relocs.c », needed for « arch/x86/tools/relocs ». Stop.
make[1]: *** [archscripts] Erreur 2
make[1]: exiting folder « /usr/src/linux-headers-3.2.0-53-generic-pae »
make: *** [all] Erreur 2
请问我该如何解决这个错误?
信息:
- Ubuntu 版本是12.04(精确的)
- 内核 Linux 是3.2.0-53-通用-pae
的内容
/usr/src/linux-headers-3.2.0-53-generic/arch/x86/
类似于/usr/src/linux-headers-3.2.0-52-generic/arch/x86/
文件夹的内容
/usr/src/linux-source-3.2.0
是$ ls -la /usr/src/linux-source-3.2.0 total 78020 drwxr-xr-x 4 root root 4096 sept. 21 08:44 . drwxr-xr-x 74 root root 4096 sept. 21 22:44 .. drwxr-xr-x 10 root root 4096 sept. 21 08:44 debian drwxr-xr-x 8 root root 4096 sept. 21 08:44 debian.master -rw-r--r-- 1 root root 79874365 aug. 23 00:11 linux-source-3.2.0.tar.bz2
和
$ find /usr/src/linux-source-3.2.0 -name "relocs.c"
不返回任何内容
答案1
这个问题的线索是错误消息的这一部分:
使[2]:*没有规则来构建目标“arch/x86/tools/relocs.c”,而“arch/x86/tools/relocs”需要该规则。停止。
该 makefile 正在寻找名为 的代码模块relocs.c
。
现在,代码模块通常不存在于内核头文件中。您需要先提取内核源代码,然后 Makefile 才能进行处理。
我们开工吧。
导航到您的内核源文件夹:
cd /usr/src/linux-source-[version]
在你的情况下[版本]内核版本是3.2.0。
列出文件夹的内容。您应该在其中看到一个名为的文件。NB 与之前替换一样linux-source-[version].tar.bz2
[版本]您的内核版本号。
如果没有,请安装源:
sudo apt-get install linux-source
现在提取源代码:
sudo tar -jxvf linux-source-[version].tar.bz2
然后你就可以完成你的编译了。
答案2
所需的 i386 标头:
sudo apt-get install linux-headers-*(kernel version)*:i386
例子:
sudo apt-get install linux-headers-5.4.0-42:i386