blob: e42087bf2b9b1e1771e5690c036f23ada18233cd [file] [log] [blame]
make命令只能在ap/project/$(CHIP_NAME)/prj_xxx/build目录运行
make help for more infomation
以prj_watch为例
1、AP版本编译需要获取ap、cp、build、pub、tools目录。
2、完整大版本编译:make allclean all,等同make recovery normal命令。
建议获取代码后完整编译一次,先编译recovery,再编译normal,编译后系统默认配置为normal版本。
应用和库的编译依赖uClibc的编译,uClibc和应用busybox依赖内核头文件,所以应用和库单独编译之前,建议完整编译一次。
3、增量编译命令
normal版本编译:make normal,编译完成文件在project/zx297520v3/prj_watch/bin目录
如果编译报错,代码修改后增量编译:make normal2
recovery版本类似,make recovery版本出错后,代码修改后增量编译:make recovery2
4、normal版本下,修改了cp侧代码,make ps kernel cpkoclean cpko rootfs copybin,或者可以用make normal2,后者编译时间稍长一点
内核文件、调试vmlinux、带调试信息的cpko.ko在project/zx297520v3/prj_watch/bin目录,cp代码以ko文件体现在ap_rootfs.img。
5、normal版本下,修改了内核代码,运行make kernel cpkoclean cpko rootfs copybin,或者可以用make kernel2,
内核文件和调试vmlinux在project/zx297520v3/prj_watch/bin目录,要同时烧录ap_cpuap.bin和ap_rootfs.img文件,ap_cpuap.bin和ap_rootfs.img(包含cpko.ko)不配套会开机死机。
5.1 normal版本下,修改了原生内核ko代码,make kernel rootfs copybin,或者可以用make normal2,后者编译时间稍长一点
内核文件和调试vmlinux 带调试信息的ko文件在project/zx297520v3/prj_watch/bin目录,ko体现在ap_rootfs.img文件里。
6、normal版本下,修改了lib代码,make appclean lib app rootfs copybin,或者可以用make normal2
ap_rootfs.img为根文件系统,在project/zx297520v3/prj_watch/bin目录
如果app用了lib的静态库,app的Makefile发现不了依赖,所以最好appclean一下
解决库编译错误,可以make zte_lib=libnvram lib方式,这样只编译libnvram应用
make zte_lib=libnvram libclean只清空libnvram的编译
7、normal版本下,修改了app代码,make app rootfs copybin,或者可以用make normal2
ap_rootfs.img为根文件系统,在project/zx297520v3/prj_watch/bin目录
解决应用编译错误,可以make zte_app=appdemo app方式,这样只编译appdemo应用
make zte_app=appdemo appclean只清空appdemo应用的编译
8、修改rc脚本
rc脚本位置:
normal版本:ap/project/zx297520v3/prj_watch/fs/normal/rootfs/etc/rc
修改后,make rootfs copybin
ap_rootfs.img为根文件系统,在project/zx297520v3/prj_watch/bin目录
recovery版本:ap/project/zx297520v3/prj_watch/fs/normal/rootfs/recovery/etc/rc
为了节省空间,recovery模式没有单独的根文件系统分区,修改后重新编译normal版本即可。
9、修改内核配置
make all或make normal完整编译一次后,运行make kernel_menuconfig打开内核配置窗口
配置保存后将ap/os/linux/linux-3.4.x/.config信息同步到ap/project/zx297520v3/prj_watch/config/normal/config.linux
recovery版本类似
10、修改busybox的配置
make normal完整编译一次后,在ap/app/busybox/build目录运行make menuconfig。
配置保存后将ap/app/busybox/build/.config信息同步到ap/project/zx297520v3/prj_watch/config/normal/config.busybox
recovery版本没有单独的根文件系统,recovery版本的busybox存放在normal的根文件系统里。
make normal完整编译一次后,在ap/app/busybox_recovery/build目录运行make menuconfig。
配置保存后将ap/app/busybox_recovery/build/.config信息同步到ap/project/zx297520v3/prj_watch/config/normal/config.busybox_recovery
11、cp侧包含内核头文件:直接包含
Makefile里头文件路径增加:-I$(LINUX_DIR)/include
12、内核包含cp侧头文件,要先包含cp_types.h,这里包含cp侧的基本数据类型定义。
比如psbuf.h
Makefile里:
ccflags-y += -I/$(CP_ROOT_DIR)/ps/modem/com/inc
C文件:
#include <linux/cp_types.h>
#include "psbuf.h"
13、应用和库的Makefile要包含COMMON_BASE_MK或COMMON_MK。
经过configure生成Makefile的开源应用和库建议包含COMMON_BASE_MK,因为某些开源应用如果CFLAGS里包含宏定义会导致configure失败。
ZTE自研应用包含COMMON_MK。COMMON_MK比COMMON_BASE_MK多定义了一些ZTE应用需要的特殊宏。
14、default_parameter_*文件位于ap/project/zx297520v3/prj_watch/fs/normal/rootfs/etc_ro/default目录
15、无论是normal版本还是recovery版本,根文件系统都是只读(ro)挂载的,如果要修改成可写用于调试,可以运行mount -o remount,rw /将根文件系统重新挂载为可写(rw)
16、ap侧nv配置说明
1)、注释和nv设置都是每行一条,换行符要求是linux格式(\n)
2)、注释行第一个字符必须是英文"#"号
3)、nv配置格式为:key=value,key和value可以包含空格,配置要小心,特别是key和value字符串首尾的空格,也是允许的
4)、只有在default_parameter_sys和default_parameter_user配置的nv项才会保存到flash,否则关机会丢失。可以用key=不设置value来预设nv项
5)、default_parameter_ro配置的nv项不对外开放,只用于生产相关
6)、nv show不显示default_parameter_ro配置的nv项,nv get和nv set命令也不能获取和设置default_parameter_ro的nv项,cfg_get_item()和cfg_set()函数接口也不能操作
17、共核宏CONFIG_SINGLECORE,使用范围:linux应用、linux库、linux内核和协议栈代码
18、linux操作系统宏:_OS_LINUX,使用范围:linux应用、linux库和协议栈。开源代码建议按照原来的风格使用__linux__、linux。
19、修改完内核或busybox的config配置后,可以通过执行make normal_conf生效。
重点编译命令:
normal版本修改代码后make normal2增量编译
recovery版本修改代码后make recovery2增量编译