liteOS-A学习笔记-04 Liteos-a的编译系统-4-2_编译哪些子目录

1.从链接命令看内核的组成

1.1 链接命令如下

liteOS由一系列库组成,reset_vector是它的入口。
-T:链接脚本 liteos_llvm.ld;
-Map:内存地址文件 liteos.map;
-o:目标文件 liteos;
-libraries:需要的库文件
例如 -lcortex-a7 -lbsp -lrootfs -lbase -lboard -ltickless… 即把lib board.a编译进入目标文件中去;

那么如何找到这些库的位置呢?例如,tickless这个库文件是如何得到的呢?
答:(1)搜索tickless得到路径“OpenharmonyFor6ull\kernel\liteos_a\kernel\extended\tickless”下面存放我们需要的库文件的源代码“los_tickless.c”。
(2)查看下makefile

include $(LITEOSTOPDIR)/config.mk
## MODULE_NAME :=tickless
MODULE_NAME := $(notdir $(shell pwd))
## LOCAL_SRCS  := los_tickless.c
LOCAL_SRCS := $(wildcard *.c)

LOCAL_INCLUDE := \
        -I $(LITEOSTOPDIR)/kernel/base/include -I $(LITEOSTOPDIR)/kernel/extended/include \
        -I $(LITEOSTOPDIR)/kernel/base/core

LOCAL_FLAGS := $(LOCAL_INCLUDE)

include $(MODULE)

1.2 看链接脚本-找到入口函数

OpenharmonyFor6ull_Weidongshan_SourceCode\kernel\liteos_a\tools\build\liteos_llvm.ld

ENTRY(reset_vector) ## 入口函数
INCLUDE board.ld
INPUT(libuserinit.O)
SECTIONS
{
    
    
 ...
}

1.3 查看入口函数

Openharmony_CommentByLine\kernel_liteos_a_note\arch\arm\arm\src\startup\reset_vector_up.S

1.4 查看map文件

Openharmony_CommentByLine\kernel_liteos_a_note\kernel\liteos_a\out\imx6ull\liteos.map

也可以看到异常向量表放置在最前面。

猜你喜欢

转载自blog.csdn.net/xiaoaojianghu09/article/details/110770026