• Home
Name Date Size #Lines LOC

..--

build/12-May-2024-754651

doc/12-May-2024-4,7853,688

sample/12-May-2024-5130

BUILD.gnD12-May-20245.4 KiB152144

README.mdD12-May-20243.6 KiB12997

archive_ndk.pyD12-May-20242.1 KiB7346

ndk.gniD12-May-20243.9 KiB154138

README.md

1# 使用指南
2
3## 简介
4
5包括系统提供的c/c++接口库文件,编译工具链,工具和接口描述文档。
6
7## 目录结构
8
9├── build																						**编译框架**
10│   ├── config
11│   └── toolchain
12├── doc																						 **native api接口描述文档**
13├── gcc																						 **编译工具链**
14│   ├── arm-linux-ohoseabi -> arm-linux-musleabi
15│   ├── arm-linux-musleabi
16│   ├── bin
17│   ├── host_bin
18│   ├── lib
19│   ├── libexec
20│   ├── runtime_musl
21│   └── target
22├── prebuilts																				**构建工具**
23│   └── build-tools
24├── sample																					**用户编译样例**
25│   ├── include
26│   └── src
27└── sysroot																					**Native API**
28    └── usr
29
30## 编译框架
31
32### 编译命令
33
34编译使用gn构建系统,在根目录执行:`python build.py`即可启动编译。支持的命令如下:
35
36**build:** `python build.py ` 或 ``python build.py build`
37
38**clean:** `python build.py clean`
39
40**debug/release**:`python build.py -v debug/release`
41
42debug和release版本的区别:
43
44debug版本:-g
45
46release版本:-O2 + strip符号表
47
48### 默认编译选项
49
501、安全编译选项:-fstack-protector-all,PIE,PIC,_FORTIFY_SOURCE=2,-Wl,-z,now,-Wl,-z,relro,-Wl,-z,noexecstack
51
522、告警级别:-Werror
53
54### 应用编译示例
55
561、创建应用目录,并在目录下创建BUILD.gn:
57
58```
59# Copyright (c) 2020 Huawei Device Co., Ltd.
60# Licensed under the Apache License, Version 2.0 (the "License");
61# you may not use this file except in compliance with the License.
62# You may obtain a copy of the License at
63#
64#     http://www.apache.org/licenses/LICENSE-2.0
65#
66# Unless required by applicable law or agreed to in writing, software
67# distributed under the License is distributed on an "AS IS" BASIS,
68# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
69# See the License for the specific language governing permissions and
70# limitations under the License.
71
72static_library("hello_world") {	# 应用库文件target,也可是shared_library
73    sources = [
74        "src/hello_world.c",
75    ]
76
77    include_dirs = [
78        "include",
79    ]
80}
81
82executable("sample") {			# 应用可执行文件target
83    ldflags = [
84        "-lsys_parameter",  	# 应用需要使用的库
85        "-lsec_shared"
86    ]
87    deps = [
88        ":hello_world",
89    ]
90}
91
92```
93
942、将sample加入到编译入口,编译入口为根目录下的BUILD.gn:
95
96```
97# Copyright (c) 2020 Huawei Device Co., Ltd.
98# Licensed under the Apache License, Version 2.0 (the "License");
99# you may not use this file except in compliance with the License.
100# You may obtain a copy of the License at
101#
102#     http://www.apache.org/licenses/LICENSE-2.0
103#
104# Unless required by applicable law or agreed to in writing, software
105# distributed under the License is distributed on an "AS IS" BASIS,
106# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
107# See the License for the specific language governing permissions and
108# limitations under the License.
109
110import("//build/toolchain/${ohos_build_compiler}.gni")
111
112group("ohos") {
113    deps = []
114    if (target_os == "ohos") {
115        deps += [
116            "//sample" # 新加的应用
117        ]
118    }
119}
120```
121
1223、编译输出:out/bin
123
124## 烧录和运行
125
1261、请先烧录内核和文件系统
127
1282、将应用程序nfs或者tftp到usr/bin目录下, 运行即可
129