【问题标题】:Compiling a specific program in linux kernel/Documentation在 linux 内核/文档中编译特定程序
【发布时间】:2012-05-14 11:08:26
【问题描述】:

我正在交叉编译 linux 内核。当我从 ti 的目录运行 make 时,我有以下程序编译得很好

kernel/Documentation/virtual/lguest

但是,当我编译 linux 内核然后在目标机器上启动内核映像时,lguest 程序不存在。 (我通过运行 find / -name lguest 确认)

如何确保 lguest 程序进入 linux 内核的某个位置?

【问题讨论】:

  • 可能,根据您的交叉编译工具链,您可以设置配置以从您也将上传到目标的二进制映像中添加/删除二进制文件。 lguest 程序实际上并不是内核的一部分(我的意思是,您不能将它与内核映像链接)
  • 正如 sergico 所说,如何包含用户空间二进制文件将取决于您生成的根文件系统映像的种类 - 如果没有更多系统细节,没有人可以帮助您。您可以尝试的另一个选项(用于快速测试)是在设备运行后通过 ftp 等方式将其传输到设备上。

标签: linux linux-kernel


【解决方案1】:

您必须 cd Documentation/virtual/lguest 并在该目录中明确执行“make”:

cd 文档/虚拟/lguest

制作

cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -U_FORTIFY_SOURCE lguest.c -o lguest

【讨论】:

  • 发帖人已经说过他们可以通过从其目录运行 make 来构建程序;问题在于将其安装在系统映像中(以及该映像与内核之间的区别)
  • 也许那里的 Makefile 有一个 install 目标,但对于这种类型的事情,我猜维护者并没有打扰。只需手动将二进制文件复制到您想要安装的任何位置。
  • 是的,这是真的。我可以做到,但无法在内核映像中找到它。正如我的问题所指出的那样,这可能永远不会发生。宽慰的是知道我可以手动复制粘贴可执行文件,它仍然会 owkr。
  • mail-archive.com/virtualization@lists.linux-foundation.org/… 和这张 600 多页的幻灯片:jquigley.com/files/talks/lguest.pdf 不确定它是否有帮助?
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 2011-05-03
  • 2018-04-19
  • 1970-01-01
相关资源
最近更新 更多