From 20a8f18d509f9125c8c12ad2db131e42048891bc Mon Sep 17 00:00:00 2001 From: kuangyufei Date: Sat, 24 Jul 2021 18:41:22 +0800 Subject: [PATCH] =?UTF-8?q?=20=E6=B3=A8=E8=A7=A3=E6=A0=B9=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=B3=BB=E7=BB=9F=E5=88=B6=E4=BD=9C=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=20=20=20=20=20=E7=99=BE=E4=B8=87=E6=B1=89=E5=AD=97=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=20+=20=E7=99=BE=E7=AF=87=E5=8D=9A=E5=AE=A2=E5=88=86?= =?UTF-8?q?=E6=9E=90=20=3D>=20=E6=8C=96=E9=80=8F=E9=B8=BF=E8=92=99?= =?UTF-8?q?=E5=86=85=E6=A0=B8=E6=BA=90=E7=A0=81=20=20=20=20=20=E5=8D=9A?= =?UTF-8?q?=E5=AE=A2=E8=BE=93=E5=87=BA=E7=AB=99=E7=82=B9(=E5=9B=BD?= =?UTF-8?q?=E5=86=85):http://weharmonyos.com=20=20=20=20=20=E5=8D=9A?= =?UTF-8?q?=E5=AE=A2=E8=BE=93=E5=87=BA=E7=AB=99=E7=82=B9(=E5=9B=BD?= =?UTF-8?q?=E5=A4=96):https://weharmony.github.io=20=20=20=20=20=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=E6=96=87=E4=BB=B6=E7=B3=BB=E7=BB=9F:https://gitee.com?= =?UTF-8?q?/weharmony/third=5Fparty=5FNuttX=20=20=20=20=20=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=E5=8D=8F=E8=AE=AE=E6=A0=88:https://gitee.com/weharmon?= =?UTF-8?q?y/third=5Fparty=5Flwip=20=20=20=20=20=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=AD=90=E7=B3=BB=E7=BB=9F:https://gitee.com?= =?UTF-8?q?/weharmony/build=5Flite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 49 +++++++++++++------------- apps/Makefile | 6 ++-- apps/module.mk | 12 +++---- tools/build/mk/los_config.mk | 4 +-- tools/scripts/make_rootfs/rootfsdir.sh | 11 +++--- tools/scripts/make_rootfs/rootfsimg.sh | 12 +++---- zzz/git/build_init.sh | 2 +- zzz/git/build_pull.sh | 2 +- zzz/git/build_push.sh | 10 +++--- zzz/git/push.sh | 2 +- 10 files changed, 56 insertions(+), 54 deletions(-) diff --git a/Makefile b/Makefile index ff3bf7c9..51b13b38 100644 --- a/Makefile +++ b/Makefile @@ -27,18 +27,18 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -LITEOSTOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) +LITEOSTOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) #获取当前目录 export OS=$(shell uname -s) ifneq ($(OS), Linux) LITEOSTOPDIR := $(shell dirname $(subst \,/,$(LITEOSTOPDIR))/./) endif -LITEOSTHIRDPARTY := $(LITEOSTOPDIR)/../../third_party +LITEOSTHIRDPARTY := $(LITEOSTOPDIR)/../../third_party #找到 third_party 目录 export LITEOSTOPDIR export LITEOSTHIRDPARTY -RM = -rm -rf +RM = -rm -rf #宏定义 MAKE = make __LIBS = libs APPS = apps @@ -51,7 +51,7 @@ LITEOS_PLATFORM_BASE = $(LITEOSTOPDIR)/platform export CONFIG_=LOSCFG_ ifeq ($(PRODUCT_PATH),) -export PRODUCT_PATH=$(LITEOSTOPDIR)/../../device/hisilicon/drivers +export PRODUCT_PATH=$(LITEOSTOPDIR)/../../device/hisilicon/drivers #找到 device 目录 endif ifeq ($(shell which menuconfig),) @@ -59,7 +59,7 @@ $(shell pip install --user kconfiglib >/dev/null) endif $(shell env CONFIG_=$(CONFIG_) PRODUCT_PATH=$(PRODUCT_PATH) olddefconfig >/dev/null) --include $(LITEOSTOPDIR)/tools/build/config.mk +-include $(LITEOSTOPDIR)/tools/build/config.mk #定义了各种变量 ifeq ($(LOSCFG_STORAGE_SPINOR), y) FSTYPE = jffs2 @@ -125,10 +125,10 @@ endif #-----need move when make version-----# ##### make lib ##### -$(__LIBS): $(OUT) $(CXX_INCLUDE) +$(__LIBS): $(OUT) $(CXX_INCLUDE) #编译库文件 $(OUT): $(LITEOS_MENUCONFIG_H) - $(HIDE)mkdir -p $(OUT)/lib + $(HIDE)mkdir -p $(OUT)/lib #创建 ../lib 目录 , 将生成 *.a 文件 , $(HIDE)$(CC) -I$(LITEOSTOPDIR)/kernel/base/include -I$(LITEOSTOPDIR)/../../$(LOSCFG_BOARD_CONFIG_PATH) \ -I$(LITEOS_PLATFORM_BASE)/include -imacros $< -E $(LITEOS_PLATFORM_BASE)/board.ld.S \ -o $(LITEOS_PLATFORM_BASE)/board.ld -P @@ -149,29 +149,29 @@ menuconfig: $(LITEOS_MENUCONFIG_H): .config $(HIDE)genconfig - +#编译内核的各个目标文件 $(LITEOS_TARGET): $(__LIBS) sysroot $(HIDE)touch $(LOSCFG_ENTRY_SRC) - + #逐个编译子目录中的 makefile $(HIDE)for dir in $(LITEOS_SUBDIRS); \ do $(MAKE) -C $$dir all || exit 1; \ done - + # 生成 liteos.map $(LD) $(LITEOS_LDFLAGS) $(LITEOS_TABLES_LDFLAGS) $(LITEOS_DYNLDFLAGS) -Map=$(OUT)/$@.map -o $(OUT)/$@ --start-group $(LITEOS_LIBDEP) --end-group # $(SIZE) -t --common $(OUT)/lib/*.a >$(OUT)/$@.objsize - $(OBJCOPY) -O binary $(OUT)/$@ $(LITEOS_TARGET_DIR)/$@.bin - $(OBJDUMP) -t $(OUT)/$@ |sort >$(OUT)/$@.sym.sorted - $(OBJDUMP) -d $(OUT)/$@ >$(OUT)/$@.asm + $(OBJCOPY) -O binary $(OUT)/$@ $(LITEOS_TARGET_DIR)/$@.bin #生成 liteos.bin 文件 + $(OBJDUMP) -t $(OUT)/$@ |sort >$(OUT)/$@.sym.sorted #生成 liteos.sym.sorted 文件 + $(OBJDUMP) -d $(OUT)/$@ >$(OUT)/$@.asm # 生成 liteos.asm文件 # $(NM) -S --size-sort $(OUT)/$@ >$(OUT)/$@.size +# 编译多个应用程序 +$(APPS): $(LITEOS_TARGET) sysroot #依赖于 LITEOS_TARGET , sysroot + $(HIDE)$(MAKE) -C apps all #执行apps目录下Makefile 的all目标, -C代表进入apps目录, -$(APPS): $(LITEOS_TARGET) sysroot - $(HIDE)$(MAKE) -C apps all - -prepare: +prepare: #准备工作,创建 musl 目录,用于拷贝 c/c++ .so库 $(HIDE)mkdir -p $(OUT)/musl -ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) - $(HIDE)cp -f $$($(CC) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CFLAGS) -print-file-name=libc.so) $(OUT)/musl - $(HIDE)cp -f $$($(GPP) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CXXFLAGS) -print-file-name=libc++.so) $(OUT)/musl +ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) #使用clang-9 ,鸿蒙默认用这个编译 + $(HIDE)cp -f $$($(CC) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CFLAGS) -print-file-name=libc.so) $(OUT)/musl #将C库复制到musl目录下 + $(HIDE)cp -f $$($(GPP) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CXXFLAGS) -print-file-name=libc++.so) $(OUT)/musl #将C++库复制到musl目录下 else $(HIDE)cp -f $(LITEOS_COMPILER_PATH)/target/usr/lib/libc.so $(OUT)/musl $(HIDE)cp -f $(LITEOS_COMPILER_PATH)/arm-linux-musleabi/lib/libstdc++.so.6 $(OUT)/musl @@ -179,16 +179,17 @@ else $(STRIP) $(OUT)/musl/* endif -$(ROOTFSDIR): prepare $(APPS) +$(ROOTFSDIR): prepare $(APPS) #依赖于 prepare ,APPS $(HIDE)$(MAKE) clean -C apps $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsdir.sh $(OUT)/bin $(OUT)/musl $(ROOTFS_DIR) $(LITEOS_TARGET_DIR) ifneq ($(VERSION),) $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/releaseinfo.sh "$(VERSION)" $(ROOTFS_DIR) $(LITEOS_TARGET_DIR) endif -$(ROOTFS): $(ROOTFSDIR) - $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsimg.sh $(ROOTFS_DIR) $(FSTYPE) - $(HIDE)cd $(ROOTFS_DIR)/.. && zip -r $(ROOTFS_ZIP) $(ROOTFS) +#例如:执行 make rootfs FSTYPE=jffs2 一切从这里开始 +$(ROOTFS): $(ROOTFSDIR) #依赖于 ROOTFSDIR + $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsimg.sh $(ROOTFS_DIR) $(FSTYPE) #制作镜像文件 + $(HIDE)cd $(ROOTFS_DIR)/.. && zip -r $(ROOTFS_ZIP) $(ROOTFS) #打rootfs.zip包 clean: $(HIDE)for dir in $(LITEOS_SUBDIRS); \ diff --git a/apps/Makefile b/apps/Makefile index e2254341..a8a10d80 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -39,13 +39,13 @@ APPS := app all: $(APPS) # Make -$(APPS): -ifneq ($(APP_SUBDIRS), ) +$(APPS): +ifneq ($(APP_SUBDIRS), ) #进入子目录下,执行 make命令,APP_SUBDIRS由 module.mk 指定 $(HIDE) for dir in $(APP_SUBDIRS); do $(MAKE) -C $$dir || exit 1; done endif clean: -ifneq ($(APP_SUBDIRS), ) +ifneq ($(APP_SUBDIRS), ) #进入子目录下,执行 make clean 命令 $(HIDE) for dir in $(APP_SUBDIRS); do $(MAKE) -C $$dir clean; done endif diff --git a/apps/module.mk b/apps/module.mk index 9f36b039..813f8cf4 100644 --- a/apps/module.mk +++ b/apps/module.mk @@ -27,26 +27,26 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -APP_SUBDIRS := +APP_SUBDIRS := #记录子目录变量,用于编译 ##build modules config## ifeq ($(LOSCFG_SHELL), y) -APP_SUBDIRS += shell +APP_SUBDIRS += shell #添加 shell 子目录 endif ifeq ($(LOSCFG_USER_INIT_DEBUG), y) -APP_SUBDIRS += init +APP_SUBDIRS += init #添加 init 子目录 endif ifeq ($(LOSCFG_NET_LWIP_SACK_TFTP), y) -APP_SUBDIRS += tftp +APP_SUBDIRS += tftp #添加 tftp 子目录 endif #only enable for qemu now ifeq ($(LOSCFG_PLATFORM_QEMU_ARM_VIRT_CA7), y) ifeq ($(LOSCFG_SHELL), y) -APP_SUBDIRS += mksh -APP_SUBDIRS += toybox +APP_SUBDIRS += mksh #添加 mksh 子目录 +APP_SUBDIRS += toybox #添加 toybox 子目录 endif endif diff --git a/tools/build/mk/los_config.mk b/tools/build/mk/los_config.mk index b332f723..f34343c5 100644 --- a/tools/build/mk/los_config.mk +++ b/tools/build/mk/los_config.mk @@ -118,11 +118,11 @@ endif BUILD = $(OUT)/obj MK_PATH = $(LITEOSTOPDIR)/tools/build/mk CXX_PATH = $(LITEOSTOPDIR)/lib/cxxstl -JFFS_PATH = $(LITEOSTOPDIR)/fs/jffs2 +JFFS_PATH = $(LITEOSTOPDIR)/fs/jffs2 #jffs2文件系统目录 LITEOS_SCRIPTPATH ?= $(LITEOSTOPDIR)/tools/scripts LITEOS_LIB_BIGODIR = $(OUT)/lib/obj LITEOS_MENUCONFIG_H = $(LITEOSTOPDIR)/config.h -LOSCFG_ENTRY_SRC = $(LITEOSTOPDIR)/kernel/common/los_config.c +LOSCFG_ENTRY_SRC = $(LITEOSTOPDIR)/kernel/common/los_config.c #内核配置文件 ### include variable MODULE = $(MK_PATH)/module.mk diff --git a/tools/scripts/make_rootfs/rootfsdir.sh b/tools/scripts/make_rootfs/rootfsdir.sh index ed3f690a..48f12ff9 100644 --- a/tools/scripts/make_rootfs/rootfsdir.sh +++ b/tools/scripts/make_rootfs/rootfsdir.sh @@ -30,21 +30,22 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. set -e -BIN_DIR=$1 -LIB_DIR=$2 +BIN_DIR=$1 #放置 hb build 后生成的各种应用 bin目录 +LIB_DIR=$2 #musl/*.so ROOTFS_DIR=$3 OUT_DIR=$4 +#创建根文件系统的各种目录 mkdir -p ${ROOTFS_DIR}/bin ${ROOTFS_DIR}/lib ${ROOTFS_DIR}/usr/bin ${ROOTFS_DIR}/usr/lib ${ROOTFS_DIR}/etc \ ${ROOTFS_DIR}/app ${ROOTFS_DIR}/data ${ROOTFS_DIR}/proc ${ROOTFS_DIR}/dev ${ROOTFS_DIR}/data/system ${ROOTFS_DIR}/data/system/param \ ${ROOTFS_DIR}/system ${ROOTFS_DIR}/system/internal ${ROOTFS_DIR}/system/external ${OUT_DIR}/bin ${OUT_DIR}/libs if [ -d "${BIN_DIR}" ] && [ "$(ls -A "${BIN_DIR}")" != "" ]; then cp -f ${BIN_DIR}/* ${ROOTFS_DIR}/bin if [ -e ${BIN_DIR}/shell ] && [ "${BIN_DIR}/shell" != "${OUT_DIR}/bin/shell" ]; then - cp -f ${BIN_DIR}/shell ${OUT_DIR}/bin/shell + cp -f ${BIN_DIR}/shell ${OUT_DIR}/bin/shell #拷贝 shell 到根文件系统的 /bin下 fi if [ -e ${BIN_DIR}/tftp ] && [ "${BIN_DIR}/tftp" != "${OUT_DIR}/bin/tftp" ]; then - cp -f ${BIN_DIR}/tftp ${OUT_DIR}/bin/tftp + cp -f ${BIN_DIR}/tftp ${OUT_DIR}/bin/tftp #拷贝 tftp 到根文件系统的 /bin下 fi fi -cp -f ${LIB_DIR}/* ${ROOTFS_DIR}/lib +cp -f ${LIB_DIR}/* ${ROOTFS_DIR}/lib #将c/c++ .so 库拷贝到根文件系统的 /lib cp -f ${LIB_DIR}/* ${OUT_DIR}/libs diff --git a/tools/scripts/make_rootfs/rootfsimg.sh b/tools/scripts/make_rootfs/rootfsimg.sh index 816bbb99..a53dfd1f 100644 --- a/tools/scripts/make_rootfs/rootfsimg.sh +++ b/tools/scripts/make_rootfs/rootfsimg.sh @@ -34,8 +34,8 @@ system=$(uname -s) ROOTFS_DIR=$1 FSTYPE=$2 ROOTFS_IMG=${ROOTFS_DIR}"_"${FSTYPE}".img" -JFFS2_TOOL=mkfs.jffs2 -WIN_JFFS2_TOOL=mkfs.jffs2.exe +JFFS2_TOOL=mkfs.jffs2 #linux 下 制作 jffs2镜像文件的工具 +WIN_JFFS2_TOOL=mkfs.jffs2.exe #windows 下 制作 jffs2镜像文件的工具 YAFFS2_TOOL=mkyaffs2image100 VFAT_TOOL=mkfs.vfat ROMFS_TOOL=genromfs @@ -50,19 +50,19 @@ fi return 0 } -chmod -R 755 ${ROOTFS_DIR} +chmod -R 755 ${ROOTFS_DIR} if [ -f "${ROOTFS_DIR}/bin/init" ]; then - chmod 700 ${ROOTFS_DIR}/bin/init 2> /dev/null + chmod 700 ${ROOTFS_DIR}/bin/init 2> /dev/null #标准错误输出重定向到空设备文件 fi if [ -f "${ROOTFS_DIR}/bin/shell" ]; then chmod 700 ${ROOTFS_DIR}/bin/shell 2> /dev/null fi - +# http://manpages.ubuntu.com/manpages/trusty/man1/mkfs.jffs2.1.html if [ "${FSTYPE}" = "jffs2" ]; then if [ "${system}" != "Linux" ] ; then tool_check ${WIN_JFFS2_TOOL} ${WIN_JFFS2_TOOL} -q -o ${ROOTFS_IMG} -d ${ROOTFS_DIR} --pagesize=4096 - else + else #Linux + jffs2 执行这里 tool_check ${JFFS2_TOOL} ${JFFS2_TOOL} -q -o ${ROOTFS_IMG} -d ${ROOTFS_DIR} --pagesize=4096 fi diff --git a/zzz/git/build_init.sh b/zzz/git/build_init.sh index 32a9cf3a..82d6cc82 100644 --- a/zzz/git/build_init.sh +++ b/zzz/git/build_init.sh @@ -13,6 +13,6 @@ ### cd ../../../../ mkdir build -git clone git@gitee.com:weharmony/build_lite.git build/lite +git clone git@gitee.com:weharmony/build_lite_note.git build/lite cd - diff --git a/zzz/git/build_pull.sh b/zzz/git/build_pull.sh index 63b9dda6..4d6e9aca 100644 --- a/zzz/git/build_pull.sh +++ b/zzz/git/build_pull.sh @@ -1,7 +1,7 @@ ### 注解 third_party_NuttX 源码 cd ../../../../build/lite #git fetch -git pull origin master +git pull git@gitee.com:weharmony/build_lite_note.git master #git pull --rebase origin master diff --git a/zzz/git/build_push.sh b/zzz/git/build_push.sh index 81900233..dd7b4db6 100644 --- a/zzz/git/build_push.sh +++ b/zzz/git/build_push.sh @@ -2,14 +2,14 @@ cd ../../../../build/lite git add -A -git commit -m ' 挖透鸿蒙编译过程 +git commit -m ' 注解鸿蒙编译构建子系统 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 博客输出站点(国内):http://weharmonyos.com 博客输出站点(国外):https://weharmony.github.io - 注解文件系统:https://gitee.com/weharmony/third_party_NuttX - 注解协议栈:https://gitee.com/weharmony/third_party_lwip - 注解编译子系统:https://gitee.com/weharmony/build_lite + 注解文件系统:https://gitee.com/weharmony/third_party_NuttX_note + 注解协议栈:https://gitee.com/weharmony/third_party_lwip_note + 注解编译子系统:https://gitee.com/weharmony/build_lite_note ' -git push git@gitee.com:weharmony/build_lite.git master +git push git@gitee.com:weharmony/build_lite_note.git master cd - \ No newline at end of file diff --git a/zzz/git/push.sh b/zzz/git/push.sh index 4c967bc3..370ab8db 100644 --- a/zzz/git/push.sh +++ b/zzz/git/push.sh @@ -1,5 +1,5 @@ git add -A -git commit -m ' 增加编译构建博客 +git commit -m ' 注解根文件系统制作过程 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 博客输出站点(国内):http://weharmonyos.com 博客输出站点(国外):https://weharmony.github.io -- GitLab