• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# GN脚本转换工具 问题记录
2
3## 具体三方库转换生成gn脚本问题记录
4
5### 转换third_party/libpng6
71、使用VS Code插件转换libpng库时,参数填写如图所示,点击ok之后,右下角弹出genError日志,可将日志信息全部复制到日记本等工具,详细日志显示报错: "Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)"。
8
9![](./figures/libpng_not_find_zlib.png)
10
11![](./figures/libpng_not_find_zlib_log.png)
12
13问题定位:libpng三方库中引用到zlib库,但转换生成gn脚本时,未指定libzlib.z.so路径及zlib三方库源码路径,导致转换失败。
14
15问题解决:OpenHarmony源码中存在zlib三方库源码,若已编译成功过镜像,则out目录下会包含libzlib.z.so镜像。因此,在使用VS Code插件转换生成gn脚本时,在编译选项中指定libzlib.z.so路径、zlib库源文件路径即可,具体命令如下:
16
17	(-DM_LIBRARY=,-DZLIB_LIBRARY=/home/harmony/OpenHarmony/out/khdvk_rk3568_a/appexecfwk/bundle_framework/libzlib.z.so,-DZLIB_INCLUDE_DIR=/home/harmony/OpenHarmony/third_party/zlib)
18
19![](./figures/libpng_generate_success.png)
20
21### 转换third_party/curl22
231、使用VS Code插件转换curl库时,参数填写如图所示,点击ok之后,右下角弹出genError日志,可将日志信息全部复制到日记本等工具,查看日志显示: "system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)"。
24
25![](./figures/curl_not_find_openssl.png)
26
27![](./figures/curl_not_find_openssl_log.png)
28
29问题定位:curl三方库中引用到openssl三方库,但工具转换时未指定libcrypto.z.so路径以及openssl源码路径,导致转换失败。
30
31问题解决:OpenHarmony源码存在openssl库,且在out路径下包含libcrypto.z.so镜像。因此,在使用VS Code插件转换生成gn脚本时,在编译选项中指定libcrypto.z.so路径、openssl库源文件路径即可,命令如下:
32
33	(-DOPENSSL_ROOT_DIR=abc,-DOPENSSL_INCLUDE_DIR=/home/harmony/OpenHarmony/third_party/boringssl/src/include,-DOPENSSL_CRYPTO_LIBRARY=/home/harmony/OpenHarmony/out/khdvk_rk3568_a/developtools/profiler/libcrypto.z.so)
34
35![](./figures/curl_not_find_openssl_lib.png)
36
372、根据步骤1后发现新的错误,具体报错日志为:未设置OPENSSL_SSL_LIBRARY路径。
38
39![](./figures/curl_not_find_openssl_lib_log.png)
40
41问题定位:工具在转换时未指定libssl.z.so路径,导致转换失败。
42
43问题解决:编译转换时增加指定libssl.z.so路径,命令如下:
44
45	(-DOPENSSL_ROOT_DIR=abc,-DOPENSSL_INCLUDE_DIR=/home/harmony/OpenHarmony/third_party/boringssl/src/include,-DOPENSSL_CRYPTO_LIBRARY=/home/harmony/OpenHarmony/out/khdvk_rk3568_a/developtools/profiler/libcrypto.z.so,-DOPENSSL_SSL_LIBRARY=/home/harmony/OpenHarmony/out/khdvk_rk3568_a/developtools/profiler/libssl.z.so)
46
47![](./figures/curl_generate_clang.png)
48
493、根据步骤2后再次发现新的错误,具体报错日志为:“clang未解析参数 /home/harmony/OpenHarmony/third_party/boringssl/src/include”,具体日志信息如下:
50
51![](./figures/curl_generate_clang_log.png)
52
53问题定位:编译脚本中存在工具不支持的特殊编译选项。
54
55问题解决:在转换三方库时,可将扩展编译选项选择是,然后在扩展选项名称中填写“/home/harmony/OpenHarmony/third_party/boringssl/src/include”,具体操作如下所示:
56
57![](./figures/curl_generate_success.png)
58
59### 转换third_party/libphonenumber60
611、使用VS Code插件转换libphonenumber库时,参数填写如图所示,点击ok之后,右下角弹出genError日志,可将日志信息全部复制到日记本等工具,查看日志显示: "Can't find Google C++ Testing Framework"。
62
63![](./figures/libphnum_not_find_google.png)
64
65![](./figures/libphnum_not_find_gtest.png)
66
67问题定位:工具在转换时未指定gtest路径,导致转换生成gn脚本时找不到“Google C++ Testing Framework”。
68
69问题解决:OpenHarmony源码存在gtest库,因此在使用VS Code插件转换时,在编译选项处指定gtest路径即可,具体填写如下:
70
71	(-DGTEST_INCLUDE_DIR=/home/harmony/OpenHarmony/third_party/googletest/googletest/include)
72
73![](./figures/libphnum_not_find_google_sourcedir.png)
74
752、根据步骤1后发现新的错误,具体报错日志为未设置GTEST_SOURCE_DIR路径。
76
77![](./figures/libphnum_not_find_gtest_sour.png)
78
79问题定位:工具在转换时未指定GTEST_SOURCE_DIR路径,导致转换生成gn脚本时找不到gtest源文件。
80
81问题解决:在工具编译选项处增加指定GTEST_SOURCE_DIR路径,具体填写如下:
82
83	(-DGTEST_INCLUDE_DIR=/home/harmony/OpenHarmony/third_party/googletest/googletest/include,-DGTEST_SOURCE_DIR=/home/harmony/OpenHarmony/third_party/googletest/googletest)
84
85![](./figures/libphnum_generate_success.png)
86
87如上图所示生成gn脚本成功。
88
89### 转换third_party/libcoap90
911、使用可执行程序转换libcoap库时,报错如下:
92
93![](./figures/libcoap_not_find_mbedtls.png)
94
95问题定位:该三方库引用到mbedtls三方库,但工具在转换时未指定mbedtls源码路径以及libmbedtls.z.so镜像路径,导致转换失败。
96
97问题解决:OpenHarmony源码中存在mbedtls三方库,且out目录下包含libmbedtls.z.so镜像,在转换libcoap库时增加-a参数,且指定MBEDTLS_INCLUDE_DIRS路径、MBEDTLS_LIBRARY路径即可,具体命令如下:
98
99	harmony@Ubuntu-64:~/linshi/napi_generator_2/hdc/gn/gn-gen$./gn-gen-linux -o out/khdvk_rk3568_a -p /home/harmony/OpenHarmony -f  third_party/libcoap/CMakeLists.txt -a "(-DM_LIBRARY=,-DMBEDTLS_INCLUDE_DIRS=/home/harmony/OpenHarmony/third_party/mbedtls,-DMBEDTLS_LIBRARY=/home/harmony/OpenHarmony/out/khdvk_rk3568_a/common/dsoftbus_standard/libmbedtls.z.so)"
100
1012、根据步骤1后发现新的错误,根据日志信息显示为“clang未解析参数 -g”。
102
103![](./figures/libcoap_not_analysis_g.png)
104
105问题定位:当前工具源码不支持解析参数-g,导致转换失败。
106
107问题解决:在res/cfg.json文件的compileflag参数中添加-g,如下所示:
108
109	{
110    "fileSuffix": ".cpp, .cxx, .cc, .hpp",
111    "compileflag": "--target=, -march=,-g"
112	}
113
1143、根据步骤2后发现新的错误,根据日志信息显示为“clang未解析参数 -lMBEDX509_LIBRARY-NOTFOUND”。
115
116![](./figures/libcoap_not_analysis_mbedx509.png)
117
118问题定位:当前工具源码不支持解析参数-lMBEDX509_LIBRARY-NOTFOUND,导致转换失败。
119
120问题解决:在res/cfg.json文件的compileflag参数中添加-lMBEDX509_LIBRARY-NOTFOUND,如下所示:
121
122	{
123    "fileSuffix": ".cpp, .cxx, .cc, .hpp",
124    "compileflag": "--target=, -march=,-g,-lMBEDX509_LIBRARY-NOTFOUND"
125	}
126
1274、根据步骤2后发现新的错误,根据日志信息显示为“clang未解析参数 -lMBEDCRYPTO_LIBRARY-NOTFOUND”。
128
129![](./figures/libcoap_not_analysis_mbedcrypto.png)
130
131问题定位:当前工具源码不支持解析参数-lMBEDCRYPTO_LIBRARY-NOTFOUND,导致转换失败。
132
133问题解决:在res/cfg.json文件的compileflag参数中添加-lMBEDCRYPTO_LIBRARY-NOTFOUND,如下所示:
134
135	{
136    "fileSuffix": ".cpp, .cxx, .cc, .hpp",
137    "compileflag": "--target=, -march=,-g,-lMBEDX509_LIBRARY-NOTFOUND,-lMBEDCRYPTO_LIBRARY-NOTFOUND"
138	}
139
140### 转换third_party/mbedtls-development141
1421、转换生成gn脚本时,报“No module named 'jsonschema'。
143
144![](./figures/could_not_find_jsonschema.png)
145
146问题定位:当前环境中没有安装jsonschema库。
147
148问题修改:安装jsonschema库,安装命令如下:
149
150	pip install jsonschema
151
1524、转换生成gn脚本时,报“No module named 'jinja2'。
153
154![](./figures/could_not_find_jinja2.png)
155
156问题定位:当前环境中没有安装jinja2库。
157
158问题修改:安装jinja2库,安装命令如下:
159
160	pip install jinja2