為特定核心(不是正在運行的核心)編譯 Linux V4L-DVB media_build

為特定核心(不是正在運行的核心)編譯 Linux V4L-DVB media_build

是否可以編譯LinuxTV.org V4L-DVB media_build對於包含在特定路徑中的核心原始碼,而不是正在運行的核心原始碼(即不同的版本)?

我有核心原始碼並在/root/mytest/linux-3.12.6(vanilla) 和內核配置/root/mytest/linux-3.12.6/.config但我無法找到方法告訴腳本就在那裡。

例如:

# make tar DIR=/root/mytest/linux-3.12.6

失敗,因為找不到某些文件:

tar: mm/frame_vector.c: Cannot stat: No such file or directory
tar: include/linux/fence.h: Cannot stat: No such file or directory
tar: include/linux/of_graph.h: Cannot stat: No such file or directory
tar: include/linux/dma/xilinx_dma.h: Cannot stat: No such file or directory
tar: include/trace/events/v4l2.h: Cannot stat: No such file or directory
tar: include/trace/events/vb2.h: Cannot stat: No such file or directory
tar: include/uapi/linux/lirc.h: Cannot stat: No such file or directory
tar: include/uapi/linux/media-bus-format.h: Cannot stat: No such file or directory
tar: include/uapi/linux/vsp1.h: Cannot stat: No such file or directory
tar: include/uapi/linux/xilinx-v4l2-controls.h: Cannot stat: No such file or directory
tar: include/uapi/linux/smiapp.h: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
make: *** [tar] Error 2

答案1

解決方案非常簡單,但「發布」得不好;我在可用的討論中找到了它這裡。基本上,首先您必須在自己的路徑中建立核心(使用make allmodconfigmake init),然後在媒體建構, 你跑:

# make release DIR=/root/mytest/linux-3.12.6

make -C /root/mytest/media_build/v4l release
make[1]: Entering directory `/root/mtest/media_build/v4l'
Searching in /root/mytest/linux-3.12.6/Makefile for kernel version.
Forcing compiling to version 3.12.6
make[1]: Leaving directory `/root/mytest/media_build/v4l'

# ./build

正如您所看到的,它從您指定的路徑中獲取正確的核心版本目錄轉變。

相關內容