SylixOS 操作系统Makefile 简介
1.Makefile 流程图
在SylixOS中每个项目都包含一个Makefile文件,每次编译都是从Makefile文件开始。
2.mk文件介绍
- config.mk : 与配置相关,在新建base选择体系结构,cpu类型,fpu类型,release或者debug,base路径等信息会保存到此。
- header.mk : 将mktemp模板库中的mk文件路径转换为宏定义,根据config.mk选择输出是release或者debug。例如 base中mktemp文件中application.mk路径被定义为APPLICATION_MK。
- gcc.mk : 除了dsp,其他体系结构的编译链相关部分内容。包含了编译参数和编译链需要链接的.
- c6x.mk: dsp体系结构相关编译链相关的。
- arch.mk: 会根据编译链名确定出当前的体系结构,确定cpu,fpu,内核等等编译时参数。 ARCH宏定义变为体系结构名,在后面的common.mk等文件中会使用。
- clear-var.mk: 将一些宏定义清空。
- xxx.mk: 这个文件是用户根据模板,依据不同项目需要生成的不同文件添加自己相应的数据。xxx.mk 文件最后调用目标文件相应的mk文件。
- common.mk: 将在xxx.mk中用户自定义的头文件,源代码,符号等和系统的源代码,头文件的等整合。将用户自定义的每个源码文件编译成.o格式目标文件,等待后面链接。
- 目标文件: 根据实际项目需要生成的目标文件类型最终选择不同的mk文件。
- kernel-library.mk: 内核静态库类目标 makefile 模板。
- kernel-module.mk: 内核模块库类目标 makefile 模板。
- library.mk: 动态库类目标 makefile 模板。
- libsylixos.mk: libsylixos makefile 模板。
- lite-bsp.mk: lite 版本 bsp 类目标 makefile 模板。
- static-library.mk: 静态库类目标 makefile 模板。
- unit-test.mk:单元测试应用程序类目标 makefile 模板。
- bare-metal.mk: bare-metal 类目标 makefile 模板。
- bsp.mk:bsp: 类目标 makefile 模板。
- gtest.mk: gtest 应用程序类目标 makefile 模板。
- application.mk: 应用程序类目标 makefile 模板。
除去config.mk文件外,其他文件都在base/libsylixos/SylixOS/mktemp 文件夹内,如下图:
3.编译自己的代码
上面介绍了整个Makefile编译的流程,但是还缺少一个我们添加代码,头文件等的位置。
在xxx.mk中就是根据个人项目需要添加,在相应的宏定义填充完成后,其他的mk文件会根据宏定义编译出对应的目标文件。
除去编译libsylixos外,其他文件都需要填充以下几个宏(如果不需要,刻意为空)。
- LOCAL_TARGET_NAME 定义了目标文件名称。
- LOCAL_SRCS 定义了需要编译的源码。
- LOCAL_INC_PATH 定义头文件路径。
- LOCAL_DSYMBOL 定义了编译程序需要的符号。
- LOCAL_DEPEND_LIB 定义了编译程序需要的依赖库。
- LOCAL_DEPEND_LIB_PATH 定义了库文件所在的路径。
- LOCAL_USE_CXX 定义了是否使用c++。
- LOCAL_USE_CXX_EXCEPT 定义了是否使用c++ 异常。
- LOCAL_USE_GCOV 定义了是否使用代码覆盖率检查。
- LOCAL_LD_SCRIPT 定义bsp的链接脚本。
- LOCAL_PRE_LINK_CMD 执行链接执行的命令。
- LOCAL_POST_LINK_CMD 执行完链接后执行的命令。
- LOCAL_PRE_STRIP_CMD strip执行前执行命令。
- LOCAL_POST_STRIP_CMD strip执行后执行命令
在xxx.mk文件的最后,要根据自己编译目标文件类型调用相应的mk文件,比如目标文件类型是可执行目标程序,则在最后为“#include $(APPLICATION_MK)”
4.335x实例
在SylixOS 335x bsp(bsp 开源地址:链接)中,打来bsp可以看到如下图:
- 打开Makefile文件,可以看到Makefile文件首先查找并执行config.mk文件。然后会查找base中的mktemp文件夹位置。根据mktemp文件就能找到其他mk文件。
- 执行config.mk完成后会执行header.mk,在header.mk中又会调用gcc.mk(如果是dsp会调用c6x.mk),arch.mk文件执行。
- Makefile里hearder.mk后面就是应该放入xxx.mk。xxx.mk最前面需要调用clear-var.mk,清除部分宏定义。xxx.mk最后调用目标文件相应的mk。335xBSP项目里这个xxx.mk就是bspok335xbsp.mk。如下图:
- bspok335xs.bsp 中就是对第四章宏定义的填充。
- 在bspok335xs.bsp 最后调用了#include bsp.mk 如下图,最后就编译相应的bsp文件。
SylixOS 操作系统Makefile 简介相关推荐
- SylixOS操作系统自学经历(一)
SylixOS操作系统自学经历(一) 我现在的工作岗位是嵌入式软件工程师,在学习过程中感谢王翾先生,陈洪邦先生,李孝成先生以及其他同事的大力帮助. 在系统学习SylixOS操作系统前我先看了<S ...
- 翼辉操作系统 linux,2K龙芯派翼辉SylixOS操作系统使用手册.PDF
2K 龙芯派翼辉 SylixOS 操作系统使用手册 SylixOS 操作系统使用手册 User Manual PM0010010002 V1.00 Date: 2018/03/07 用户使用手册 类别 ...
- 翼辉操作系统 linux,2K龙芯派翼辉SylixOS操作系统实验手册-翼辉信息.PDF
2K龙芯派翼辉SylixOS操作系统实验手册-翼辉信息.PDF 目 录 一. 2K 龙芯派设备平台简介 1 1.1 Loongson2K1000 处理器介绍 1 1.1.1 芯片规格 1 1.1.2 ...
- OS操作系统概念简介
操作系统 操作系统是一种程序:控制应用程序执行的程序 操作系统是一种接口:应用程序和计算机硬件间的接口 操作系统就是让普通人也会用电脑的软件(为了方便),就是把整个电脑资源包装起来的一个图形界面(为了 ...
- 安装X86平台的SylixOS操作系统
1,工具 RealEvo-IDE的"Tools->RealEvo-SylixOS-Installer"启动安装工具. 如上图设置好后,点击左下一键安装SylixOS. 2,日 ...
- 【UCOSIII操作系统】简介
UCOSIII操作系统 现在开始整理UCOSIII实时操作系统的内容 UCOSIII 简介 关于UCOSIII的移植 现在开始整理UCOSIII实时操作系统的内容 UCOSIII其他内容导航不迷路 U ...
- 操作系统-计算机硬件简介
目录 1 简介 2 CPU 2.1 CPU的工作流程 2.2 超标量CPU 2.3 内核态和用户态 3 存储器 3.1 存储器分为四个层次 3.2 寄存器 3.3 高速缓存 3.4 磁盘 4 I/O设 ...
- 开源并兼容Windows NT的操作系统ReactOS简介
**************************************************************************************************** ...
- makefile简介
1.make是一个应用程序 解析源程序之间的依赖关系 根据依赖关系自动维护编译工作 执行宿主操作系统中的各种命令 2.makefile是一个描述文件 定义一系列的规则来指定源文件编译的先后顺序 拥有特 ...
- qmake, makefile, make是什么东东,makefile简介!
qmake是一个协助简化跨平台开发的构建过程 的工具,Qt附带的工具之一 . qmake能够自动生成Makefile.Microsoft Visual Studio 专案文件 和 xcode 专案文件 ...
最新文章
- Python自然语言处理
- 前端——解决微信网页清除缓存的方法
- Docker使用中遇到的问题
- arkit unity_凯蒂猫! 如何使用ARKit和Unity制作增强现实应用程序。
- libvlc media player in C# (part 1)
- Oracle的DBV工具
- 5.深入分布式缓存:从原理到实践 --- 从Memcached开始了解集中式缓存
- linux 卸载JDK(rpm 方式安装的)
- 基于matlab 的电力系统潮流仿真
- 【自动驾驶】MPC控制器 + 驾驶模型器
- 理解充分条件与必要条件
- 人体颈椎神经分布图高清,颈椎部神经分布图高清
- 系统性能优化策略案例
- C51- NRF24L01 无线串口模块
- 深度视场角(Depth Field of View)
- Android Camera API 2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)
- tc流量控制原理和实现
- iOS APP设计规范大全
- Java中的CRC校验
- Android Studio Bumblebee | 2021.1.1 Patch 2 修复BUG