注解根文件系统制作过程

    百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
    博客输出站点(国内):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
上级 a4faf72f
...@@ -27,18 +27,18 @@ ...@@ -27,18 +27,18 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # 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) export OS=$(shell uname -s)
ifneq ($(OS), Linux) ifneq ($(OS), Linux)
LITEOSTOPDIR := $(shell dirname $(subst \,/,$(LITEOSTOPDIR))/./) LITEOSTOPDIR := $(shell dirname $(subst \,/,$(LITEOSTOPDIR))/./)
endif endif
LITEOSTHIRDPARTY := $(LITEOSTOPDIR)/../../third_party LITEOSTHIRDPARTY := $(LITEOSTOPDIR)/../../third_party #找到 third_party 目录
export LITEOSTOPDIR export LITEOSTOPDIR
export LITEOSTHIRDPARTY export LITEOSTHIRDPARTY
RM = -rm -rf RM = -rm -rf #宏定义
MAKE = make MAKE = make
__LIBS = libs __LIBS = libs
APPS = apps APPS = apps
...@@ -51,7 +51,7 @@ LITEOS_PLATFORM_BASE = $(LITEOSTOPDIR)/platform ...@@ -51,7 +51,7 @@ LITEOS_PLATFORM_BASE = $(LITEOSTOPDIR)/platform
export CONFIG_=LOSCFG_ export CONFIG_=LOSCFG_
ifeq ($(PRODUCT_PATH),) ifeq ($(PRODUCT_PATH),)
export PRODUCT_PATH=$(LITEOSTOPDIR)/../../device/hisilicon/drivers export PRODUCT_PATH=$(LITEOSTOPDIR)/../../device/hisilicon/drivers #找到 device 目录
endif endif
ifeq ($(shell which menuconfig),) ifeq ($(shell which menuconfig),)
...@@ -59,7 +59,7 @@ $(shell pip install --user kconfiglib >/dev/null) ...@@ -59,7 +59,7 @@ $(shell pip install --user kconfiglib >/dev/null)
endif endif
$(shell env CONFIG_=$(CONFIG_) PRODUCT_PATH=$(PRODUCT_PATH) olddefconfig >/dev/null) $(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) ifeq ($(LOSCFG_STORAGE_SPINOR), y)
FSTYPE = jffs2 FSTYPE = jffs2
...@@ -125,10 +125,10 @@ endif ...@@ -125,10 +125,10 @@ endif
#-----need move when make version-----# #-----need move when make version-----#
##### make lib ##### ##### make lib #####
$(__LIBS): $(OUT) $(CXX_INCLUDE) $(__LIBS): $(OUT) $(CXX_INCLUDE) #编译库文件
$(OUT): $(LITEOS_MENUCONFIG_H) $(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) \ $(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 \ -I$(LITEOS_PLATFORM_BASE)/include -imacros $< -E $(LITEOS_PLATFORM_BASE)/board.ld.S \
-o $(LITEOS_PLATFORM_BASE)/board.ld -P -o $(LITEOS_PLATFORM_BASE)/board.ld -P
...@@ -149,29 +149,29 @@ menuconfig: ...@@ -149,29 +149,29 @@ menuconfig:
$(LITEOS_MENUCONFIG_H): .config $(LITEOS_MENUCONFIG_H): .config
$(HIDE)genconfig $(HIDE)genconfig
#编译内核的各个目标文件
$(LITEOS_TARGET): $(__LIBS) sysroot $(LITEOS_TARGET): $(__LIBS) sysroot
$(HIDE)touch $(LOSCFG_ENTRY_SRC) $(HIDE)touch $(LOSCFG_ENTRY_SRC)
#逐个编译子目录中的 makefile
$(HIDE)for dir in $(LITEOS_SUBDIRS); \ $(HIDE)for dir in $(LITEOS_SUBDIRS); \
do $(MAKE) -C $$dir all || exit 1; \ do $(MAKE) -C $$dir all || exit 1; \
done done
# 生成 liteos.map
$(LD) $(LITEOS_LDFLAGS) $(LITEOS_TABLES_LDFLAGS) $(LITEOS_DYNLDFLAGS) -Map=$(OUT)/$@.map -o $(OUT)/$@ --start-group $(LITEOS_LIBDEP) --end-group $(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 # $(SIZE) -t --common $(OUT)/lib/*.a >$(OUT)/$@.objsize
$(OBJCOPY) -O binary $(OUT)/$@ $(LITEOS_TARGET_DIR)/$@.bin $(OBJCOPY) -O binary $(OUT)/$@ $(LITEOS_TARGET_DIR)/$@.bin #生成 liteos.bin 文件
$(OBJDUMP) -t $(OUT)/$@ |sort >$(OUT)/$@.sym.sorted $(OBJDUMP) -t $(OUT)/$@ |sort >$(OUT)/$@.sym.sorted #生成 liteos.sym.sorted 文件
$(OBJDUMP) -d $(OUT)/$@ >$(OUT)/$@.asm $(OBJDUMP) -d $(OUT)/$@ >$(OUT)/$@.asm # 生成 liteos.asm文件
# $(NM) -S --size-sort $(OUT)/$@ >$(OUT)/$@.size # $(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 prepare: #准备工作,创建 musl 目录,用于拷贝 c/c++ .so库
$(HIDE)$(MAKE) -C apps all
prepare:
$(HIDE)mkdir -p $(OUT)/musl $(HIDE)mkdir -p $(OUT)/musl
ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 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 $(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 $(HIDE)cp -f $$($(GPP) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CXXFLAGS) -print-file-name=libc++.so) $(OUT)/musl #将C++库复制到musl目录下
else else
$(HIDE)cp -f $(LITEOS_COMPILER_PATH)/target/usr/lib/libc.so $(OUT)/musl $(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 $(HIDE)cp -f $(LITEOS_COMPILER_PATH)/arm-linux-musleabi/lib/libstdc++.so.6 $(OUT)/musl
...@@ -179,16 +179,17 @@ else ...@@ -179,16 +179,17 @@ else
$(STRIP) $(OUT)/musl/* $(STRIP) $(OUT)/musl/*
endif endif
$(ROOTFSDIR): prepare $(APPS) $(ROOTFSDIR): prepare $(APPS) #依赖于 prepare ,APPS
$(HIDE)$(MAKE) clean -C apps $(HIDE)$(MAKE) clean -C apps
$(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsdir.sh $(OUT)/bin $(OUT)/musl $(ROOTFS_DIR) $(LITEOS_TARGET_DIR) $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsdir.sh $(OUT)/bin $(OUT)/musl $(ROOTFS_DIR) $(LITEOS_TARGET_DIR)
ifneq ($(VERSION),) ifneq ($(VERSION),)
$(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/releaseinfo.sh "$(VERSION)" $(ROOTFS_DIR) $(LITEOS_TARGET_DIR) $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/releaseinfo.sh "$(VERSION)" $(ROOTFS_DIR) $(LITEOS_TARGET_DIR)
endif endif
$(ROOTFS): $(ROOTFSDIR) #例如:执行 make rootfs FSTYPE=jffs2 一切从这里开始
$(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsimg.sh $(ROOTFS_DIR) $(FSTYPE) $(ROOTFS): $(ROOTFSDIR) #依赖于 ROOTFSDIR
$(HIDE)cd $(ROOTFS_DIR)/.. && zip -r $(ROOTFS_ZIP) $(ROOTFS) $(HIDE)$(LITEOSTOPDIR)/tools/scripts/make_rootfs/rootfsimg.sh $(ROOTFS_DIR) $(FSTYPE) #制作镜像文件
$(HIDE)cd $(ROOTFS_DIR)/.. && zip -r $(ROOTFS_ZIP) $(ROOTFS) #打rootfs.zip包
clean: clean:
$(HIDE)for dir in $(LITEOS_SUBDIRS); \ $(HIDE)for dir in $(LITEOS_SUBDIRS); \
......
...@@ -40,12 +40,12 @@ all: $(APPS) ...@@ -40,12 +40,12 @@ all: $(APPS)
# Make # Make
$(APPS): $(APPS):
ifneq ($(APP_SUBDIRS), ) ifneq ($(APP_SUBDIRS), ) #进入子目录下,执行 make命令,APP_SUBDIRS由 module.mk 指定
$(HIDE) for dir in $(APP_SUBDIRS); do $(MAKE) -C $$dir || exit 1; done $(HIDE) for dir in $(APP_SUBDIRS); do $(MAKE) -C $$dir || exit 1; done
endif endif
clean: clean:
ifneq ($(APP_SUBDIRS), ) ifneq ($(APP_SUBDIRS), ) #进入子目录下,执行 make clean 命令
$(HIDE) for dir in $(APP_SUBDIRS); do $(MAKE) -C $$dir clean; done $(HIDE) for dir in $(APP_SUBDIRS); do $(MAKE) -C $$dir clean; done
endif endif
......
...@@ -27,26 +27,26 @@ ...@@ -27,26 +27,26 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
APP_SUBDIRS := APP_SUBDIRS := #记录子目录变量,用于编译
##build modules config## ##build modules config##
ifeq ($(LOSCFG_SHELL), y) ifeq ($(LOSCFG_SHELL), y)
APP_SUBDIRS += shell APP_SUBDIRS += shell #添加 shell 子目录
endif endif
ifeq ($(LOSCFG_USER_INIT_DEBUG), y) ifeq ($(LOSCFG_USER_INIT_DEBUG), y)
APP_SUBDIRS += init APP_SUBDIRS += init #添加 init 子目录
endif endif
ifeq ($(LOSCFG_NET_LWIP_SACK_TFTP), y) ifeq ($(LOSCFG_NET_LWIP_SACK_TFTP), y)
APP_SUBDIRS += tftp APP_SUBDIRS += tftp #添加 tftp 子目录
endif endif
#only enable for qemu now #only enable for qemu now
ifeq ($(LOSCFG_PLATFORM_QEMU_ARM_VIRT_CA7), y) ifeq ($(LOSCFG_PLATFORM_QEMU_ARM_VIRT_CA7), y)
ifeq ($(LOSCFG_SHELL), y) ifeq ($(LOSCFG_SHELL), y)
APP_SUBDIRS += mksh APP_SUBDIRS += mksh #添加 mksh 子目录
APP_SUBDIRS += toybox APP_SUBDIRS += toybox #添加 toybox 子目录
endif endif
endif endif
...@@ -118,11 +118,11 @@ endif ...@@ -118,11 +118,11 @@ endif
BUILD = $(OUT)/obj BUILD = $(OUT)/obj
MK_PATH = $(LITEOSTOPDIR)/tools/build/mk MK_PATH = $(LITEOSTOPDIR)/tools/build/mk
CXX_PATH = $(LITEOSTOPDIR)/lib/cxxstl CXX_PATH = $(LITEOSTOPDIR)/lib/cxxstl
JFFS_PATH = $(LITEOSTOPDIR)/fs/jffs2 JFFS_PATH = $(LITEOSTOPDIR)/fs/jffs2 #jffs2文件系统目录
LITEOS_SCRIPTPATH ?= $(LITEOSTOPDIR)/tools/scripts LITEOS_SCRIPTPATH ?= $(LITEOSTOPDIR)/tools/scripts
LITEOS_LIB_BIGODIR = $(OUT)/lib/obj LITEOS_LIB_BIGODIR = $(OUT)/lib/obj
LITEOS_MENUCONFIG_H = $(LITEOSTOPDIR)/config.h 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 ### include variable
MODULE = $(MK_PATH)/module.mk MODULE = $(MK_PATH)/module.mk
......
...@@ -30,21 +30,22 @@ ...@@ -30,21 +30,22 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
set -e set -e
BIN_DIR=$1 BIN_DIR=$1 #放置 hb build 后生成的各种应用 bin目录
LIB_DIR=$2 LIB_DIR=$2 #musl/*.so
ROOTFS_DIR=$3 ROOTFS_DIR=$3
OUT_DIR=$4 OUT_DIR=$4
#创建根文件系统的各种目录
mkdir -p ${ROOTFS_DIR}/bin ${ROOTFS_DIR}/lib ${ROOTFS_DIR}/usr/bin ${ROOTFS_DIR}/usr/lib ${ROOTFS_DIR}/etc \ 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}/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 ${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 if [ -d "${BIN_DIR}" ] && [ "$(ls -A "${BIN_DIR}")" != "" ]; then
cp -f ${BIN_DIR}/* ${ROOTFS_DIR}/bin cp -f ${BIN_DIR}/* ${ROOTFS_DIR}/bin
if [ -e ${BIN_DIR}/shell ] && [ "${BIN_DIR}/shell" != "${OUT_DIR}/bin/shell" ]; then 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 fi
if [ -e ${BIN_DIR}/tftp ] && [ "${BIN_DIR}/tftp" != "${OUT_DIR}/bin/tftp" ]; then 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
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 cp -f ${LIB_DIR}/* ${OUT_DIR}/libs
...@@ -34,8 +34,8 @@ system=$(uname -s) ...@@ -34,8 +34,8 @@ system=$(uname -s)
ROOTFS_DIR=$1 ROOTFS_DIR=$1
FSTYPE=$2 FSTYPE=$2
ROOTFS_IMG=${ROOTFS_DIR}"_"${FSTYPE}".img" ROOTFS_IMG=${ROOTFS_DIR}"_"${FSTYPE}".img"
JFFS2_TOOL=mkfs.jffs2 JFFS2_TOOL=mkfs.jffs2 #linux 下 制作 jffs2镜像文件的工具
WIN_JFFS2_TOOL=mkfs.jffs2.exe WIN_JFFS2_TOOL=mkfs.jffs2.exe #windows 下 制作 jffs2镜像文件的工具
YAFFS2_TOOL=mkyaffs2image100 YAFFS2_TOOL=mkyaffs2image100
VFAT_TOOL=mkfs.vfat VFAT_TOOL=mkfs.vfat
ROMFS_TOOL=genromfs ROMFS_TOOL=genromfs
...@@ -52,17 +52,17 @@ return 0 ...@@ -52,17 +52,17 @@ return 0
chmod -R 755 ${ROOTFS_DIR} chmod -R 755 ${ROOTFS_DIR}
if [ -f "${ROOTFS_DIR}/bin/init" ]; then 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 fi
if [ -f "${ROOTFS_DIR}/bin/shell" ]; then if [ -f "${ROOTFS_DIR}/bin/shell" ]; then
chmod 700 ${ROOTFS_DIR}/bin/shell 2> /dev/null chmod 700 ${ROOTFS_DIR}/bin/shell 2> /dev/null
fi fi
# http://manpages.ubuntu.com/manpages/trusty/man1/mkfs.jffs2.1.html
if [ "${FSTYPE}" = "jffs2" ]; then if [ "${FSTYPE}" = "jffs2" ]; then
if [ "${system}" != "Linux" ] ; then if [ "${system}" != "Linux" ] ; then
tool_check ${WIN_JFFS2_TOOL} tool_check ${WIN_JFFS2_TOOL}
${WIN_JFFS2_TOOL} -q -o ${ROOTFS_IMG} -d ${ROOTFS_DIR} --pagesize=4096 ${WIN_JFFS2_TOOL} -q -o ${ROOTFS_IMG} -d ${ROOTFS_DIR} --pagesize=4096
else else #Linux + jffs2 执行这里
tool_check ${JFFS2_TOOL} tool_check ${JFFS2_TOOL}
${JFFS2_TOOL} -q -o ${ROOTFS_IMG} -d ${ROOTFS_DIR} --pagesize=4096 ${JFFS2_TOOL} -q -o ${ROOTFS_IMG} -d ${ROOTFS_DIR} --pagesize=4096
fi fi
......
...@@ -13,6 +13,6 @@ ...@@ -13,6 +13,6 @@
### ###
cd ../../../../ cd ../../../../
mkdir build 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 - cd -
### 注解 third_party_NuttX 源码 ### 注解 third_party_NuttX 源码
cd ../../../../build/lite cd ../../../../build/lite
#git fetch #git fetch
git pull origin master git pull git@gitee.com:weharmony/build_lite_note.git master
#git pull --rebase origin master #git pull --rebase origin master
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
cd ../../../../build/lite cd ../../../../build/lite
git add -A git add -A
git commit -m ' 挖透鸿蒙编译过程 git commit -m ' 注解鸿蒙编译构建子系统
百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
博客输出站点(国内):http://weharmonyos.com 博客输出站点(国内):http://weharmonyos.com
博客输出站点(国外):https://weharmony.github.io 博客输出站点(国外):https://weharmony.github.io
注解文件系统:https://gitee.com/weharmony/third_party_NuttX 注解文件系统:https://gitee.com/weharmony/third_party_NuttX_note
注解协议栈:https://gitee.com/weharmony/third_party_lwip 注解协议栈:https://gitee.com/weharmony/third_party_lwip_note
注解编译子系统:https://gitee.com/weharmony/build_lite 注解编译子系统: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 - cd -
\ No newline at end of file
git add -A git add -A
git commit -m ' 增加编译构建博客 git commit -m ' 注解根文件系统制作过程
百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
博客输出站点(国内):http://weharmonyos.com 博客输出站点(国内):http://weharmonyos.com
博客输出站点(国外):https://weharmony.github.io 博客输出站点(国外):https://weharmony.github.io
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册