使 headers_install 无法按预期工作

使 headers_install 无法按预期工作

我安装了 Ubuntu 16.04 LTS 并安装了 linux-headers。我正在尝试构建 uClibc-ng,它需要 linux 头文件。因此,当我从 linux-headers 目录运行以下命令时,我收到以下错误消息。我缺少哪一步?

sudo make INSALL_HDR_PATH=/tmp/linux-headers headers_install
  CHK      include/generated/uapi/linux/version.h
  UPD      include/generated/uapi/linux/version.h
make[1]: *** No rule to make target 'arch/x86/entry/syscalls/syscall_32.tbl'
 needed by 'arch/x86/entry/syscalls/../include/generated/asm/syscalls_32.h'.
  Stop.
arc/x86/Makefile:216: recipe for target 'archheaders' failed.
make: *** [archheaders] Error 2

我创建了一个新的虚拟机来使用,它uname -a是:

Linux ubuntu 4.15.0-46-generic #49~16.04.1-Ubuntu SMP Tue Feb 12 17:45:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

一些问题:

  1. linux-headers-4.15.0-46和 和有什么区别linux-headers-4.15.0-46-generic
  2. 在我的虚拟机上,我有 2 组linux-header目录。一与4.14.0-29一与4.14.0-46。每个集合中有 2 个目录。一种有,一种无-generic。我需要维护这两套吗?
  3. 有谁知道需要在新的 16.04 Ubuntu 映像上执行哪些步骤才能获取 linux-headers 的任何说明?

答案1

我终于明白了这一点。我访问了 GitHub,获取了与我正在运行的 Ubuntu 版本相关的 Linux 源代码。我能够运行:

make \
  ARCH=<arch-name> O=. -C <path-to-linux-sources> \
  headers_install INSTALL_HDR_PATH=<output-directory>

这就像一个魅力,并且不需要以提升的特权模式运行。

答案2

安装linux-source包:

sudo apt-get install linux-source

uClibc 已经相当老了;我建议安装 uClibc-ng。

相关内容