定义包目录
LUBAN_SDK/
├── dl
├── Makefile
├── output
├── package
├── prebuilt
├── source
├── target
├── toolchain
└── tools
MYCOMPANY/
├── package/
│ ├── mod1
│ ├── mod2
│ └── app1
└── source
├── mod1
├── mod2
└── app1
在示例中,MYCOMPANY 目录即为用户自定义包目录,可以用来独立管理相关的包配置和源码。与 LUBAN_SDK 中的其他包一样,MYCOMPANY 目录包可以使用相同的添加包和编译操作规则。
- 建立 External TreeMYCOMPANY 目录即为一个 External Tree,建立一个 External Tree 需遵循一定的规则。以下提供了一个 External Tree 示例参考,方便用户根据示例创建自己的 Tree:
package/external/example_tree/ ├── Config.in ├── external.desc ├── external.mk ├── package │ └── example_mod │ ├── Config.in │ └── example_mod.mk └── source └── example_mod ├── CMakeLists.txt └── main.c
-
复制 package/external/example_tree 目录,并将其重命名为 MYCOMPANY。
例如 MYCOMPANY Tree 与 LUBAN_SDK 并列:LUBAN_SDK/ MYCOMPANY/
用户自定义目录名时,需确保目录名仅包含大小写字母、数字和下划线。
-
修改 MYCOMPANY/external.desc
name: EXAMPLE_TREE desc: Exampe External Tree
在 external.desc 中,修改下列两个配置项:-
name:改为与 MYCOMPANY 目录相同的名称,建议使用大写。
-
desc:填写简要的描述,应为 ASCII 字符。
示例如下:
name: MYCOMPANY desc: Packages for MyCompany
-
-
修改 MYCOMPANY/external.mk
在 external.mk 中,将 BR2_EXTERNAL_EXAMPLE_TREE_PATH 修改为与新目录相匹配的名字。- 修改前:
include $(sort $(wildcard $(BR2_EXTERNAL_EXAMPLE_TREE_PATH)/package/*/*.mk))
-
修改后:
include $(sort $(wildcard $(BR2_EXTERNAL_MYCOMPANY_PATH)/package/*/*.mk))
- 修改前:
-
修改 MYCOMPANY/Config.in
在 Config.in 文件中,将 BR2_EXTERNAL_EXAMPLE_TREE_PATH 修改为与新目录相匹配的名字:-
修改前:
menu "Example" source "$BR2_EXTERNAL_EXAMPLE_TREE_PATH/package/example_mod/Config.in" endmenu
-
修改后:
menu "MyCompany" source "$BR2_EXTERNAL_MYCOMPANY_PATH/package/example_mod/Config.in" endmenu
-
-
- 添加一个 MYCOMPANY Tree 中的源码包:
-
参考 MYCOMPANY/package/example_mod 文件,在 MYCOMPANY/package/ 中添加新包的编译配置。
可以使用 autotools 等其他编译方式,具体规则与 Luban SDK 中的其他包相同。
-
参考 MYCOMPANY/package/example_mod 文件,在 MYCOMPANY/source/ 中添加新包的源码
源码包名字应该与 package 文件夹中的包名字相同,如果包配置中有配置版本号,则源码目录的名字应为 MYCOMPANY/source/example_mod-<ver>。 同时,MYCOMPANY/source/ 目录仅保存源码,编译输出文件则存放在具体的 build 目录下,具体规则与 SDK 其他包相同。
-
- 添加到 SDK复制 package/external/external.mk 并将其添加到 Luban SDK 的根目录 LUBAN_SDK/external.mk,然后在里面添加:
LUBAN_EXTERNAL=../MYCOMPANY
添加时,可以使用绝对路径,也可以使用相对路径。
- 配置,使用命令:
make xxx_defconfig make menuconfig
应用了某个项目配置之后,进入 menuconfig 可看到
Target options ---> Toolchain ---> Build options ---> System configuration ---> Filesystem images ---> BootLoader ---> Linux kernel ---> ArtInChip packages ---> Vendor packages ---> Third-party packages ---> Host utilities ---> Firmwares ---- External options --->
顶层目录中的 External options ,进去则可以看到相关包的配置。
编译,方法与 SDK 其他包一致。