1.delphixe linux arm 架构如何编译?源码 - 知乎
2.ç°å¨çdelphi xe7åçç¨åºè¿è½è¢«åç¼è¯å
delphixe linux arm 架构如何编译? - 知乎
在编译 Delphixe Linux ARM 架构时,vmlinux 是源码通过将各个子目录下的 built-in.o、.a 等文件链接在一起形成的源码。这些文件是源码如何编译生成的呢?
编译生成 built-in.a 文件的过程涉及到 vmlinux-deps 变量,其定义了 vmlinux 所依赖的源码lua_lock源码文件集合,包括 KBUILD_LDS 连接脚本、源码集合底层源码分析KBUILD_VMLINUX_OBJS 和 KBUILD_VMLINUX_LIBS。源码
KBUILD_LDS 脚本不在此考虑范围内,源码而 KBUILD_VMLINUX_OBJS 和 KBUILD_VMLINUX_LIBS 则包含了各个子目录下的源码 built-in.o 和.a 文件。
最终,源码vmlinux-deps 的源码值包含了除 arch/arm/kernel/vmlinux.lds 以外的所有要编译链接生成的文件。
顶层 Makefile 中的源码排序函数 sort 对 vmlinux-deps 的字符串列表进行排序,并去重,源码悬浮球指标源码生成 vmlinux-dirs 变量,源码此变量保存着生成 vmlinux 所需源码文件的源码目录。
vmlinux-dirs 的值包括了多个目录,如 init、放量买卖公式源码usr、arch/arm/vfp 等。
顶层 Makefile 中的代码指定了编译过程,主要涉及到对 vmlinux-dirs 中的股指操作指标源码目录进行编译和链接。
以 "make -f ./scripts/Makefile.build obj=init" 这个命令为例,讲解详细的运行过程。这里的 Makefile.build 脚本默认目标为__build。
在只编译 Linux 内核镜像文件时,KBUILD_BUILTIN=1,KBUILD_MODULES 为空。
编译过程中,builtin-target 依赖于 real-obj-y 变量,其值为经过排序和去重后的 subdir-builtin 变量。
编译生成 built-in.a 文件时,需要确保 obj-y、obj-m、obj-、subdir-m 和 lib-target 等变量不全为空。
最后,使用if_changed 加上参数 cmd_ar_builtin 的方式调用命令,将某个目录下的所有.o 文件链接在一起,最终形成 built-in.a。
ç°å¨çdelphi xe7åçç¨åºè¿è½è¢«åç¼è¯å
å¯ä»¥çï¼åç¼è¯å°±æ¯æexeè¿ç±»çå¯æ§è¡ç¨åºä»£ç åææ±ç¼ï¼ç¶ååéè¿å¯¹æ±ç¼æ令çåæï¼è¿åædelphiçæºç ï¼åªæ¯é¾åº¦å¢å äºï¼