# 常è§é—®é¢˜ ## 常è§ç¼–译问题和解决方法 ### æç¤ºâ€œusr/sbin/ninja: invalid option -- w†- **现象æè¿°ï¼š** 编译失败,æç¤ºâ€œusr/sbin/ninja: invalid option -- wâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 编译环境ä¸ninjaç‰ˆæœ¬å¤ªä½Žï¼Œä¸æ”¯æŒ--w选项。 - **解决办法:** å¸è½½çŽ¯å¢ƒä¸ninjaå’Œgn,按照[获å–工具](../../device-dev/get-code/gettools-ide.md)。 ### æç¤ºâ€œ/usr/bin/ld: cannot find -lncurses†- **现象æè¿°ï¼š** 编译失败,æç¤ºâ€œ/usr/bin/ld: cannot find -lncursesâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 编译环境ncurses库缺失。 - **解决办法:** ```shell sudo apt-get install lib32ncurses5-dev ``` ### æç¤ºâ€œline 77: mcopy: command not found†- **现象æè¿°ï¼š** 编译失败,æç¤ºâ€œline 77: mcopy: command not foundâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 编译环境未安装mcopy。 - **解决办法:** ```shell sudo apt-get install dosfstools mtools ``` ### æç¤ºâ€œriscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory†- **现象æè¿°ï¼š** 编译失败,æç¤ºâ€œriscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directoryâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 当å‰ç”¨æˆ·å¯¹riscv编译器路径下的文件访问æƒé™ä¸å¤Ÿã€‚ - **解决办法:** 查询gcc_riscv32所在目录。 ```shell which riscv32-unknown-elf-gcc ``` 使用chmod命令修改目录æƒé™ä¸º755。 ### æç¤ºâ€œNo module named 'Crypto'†- **现象æè¿°ï¼š** 编译失败,æç¤ºâ€œNo module named 'Crypto'â€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** python3未安装Crypto。 - **解决办法:** 1. 查询Python版本å·ã€‚ ```shell python3 --version ``` 2. 需使用python3.9.2以上版本,然åŽå®‰è£…pycryptodome。 ```shell sudo pip3 install pycryptodome ``` ### æç¤ºâ€œxx.sh : xx unexpected operator†- **现象æè¿°ï¼š** 编译失败:“xx.sh [: xx unexpected operatorâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 编译环境shell䏿˜¯bash。 - **解决办法:** ```shell sudo rm -rf /bin/sh sudo ln -s /bin/bash /bin/sh ``` ### æç¤ºâ€œsome services are not authenticated. Listed as follow†- **现象æè¿°ï¼š** 编译失败:“some services are not authenticated. Listed as followâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 报错ä¸åˆ—举出æ¥çš„进程.cfgé…置文件ä¸ï¼Œå®šä¹‰äº†uid为root或system,而该进程并ä¸åœ¨äº§å“定义的高æƒé™è¿›ç¨‹å…许范围内。 - **解决办法:** 1. é™ä½Žè¿›ç¨‹çš„æƒé™ç‰çº§ã€‚修改.cfgé…置文件ä¸çš„uid定义,éžå¿…需的场景下,ä¸è¦å®šä¹‰uid为root或system。 *如果由于实现业务功能需è¦ï¼Œè¿›ç¨‹å¿…é¡»è¦æœ‰root或systemæƒé™ï¼Œåªæœ‰åœ¨è”系安全专家评审,通过安全审视åŽï¼Œæ–¹å¯ä¿®æ”¹äº§å“的高æƒé™è¿›ç¨‹ç®¡æŽ§åˆ—表,é…置文件路径为"`vendor/{å…¬å¸åç§°}/{产å“åç§°}/security_config/high_privilege_process_list.json`"。* *示例:rk3586的高æƒé™è¿›ç¨‹é…置文件ä½äºŽ`//vendor/hihope/rk3568/security_config/high_privilege_process_list.json`* ### æç¤ºâ€œError: some services do not match with critical whitelist†- **现象æè¿°ï¼š** 编译失败:“Error: some services do not match with critical whitelistâ€ã€‚ - **å¯èƒ½åŽŸå› ï¼š** 报错ä¸åˆ—举出æ¥çš„进程.cfgé…置文件ä¸ï¼Œå®šä¹‰å¹¶ä½¿èƒ½äº†criticalå—æ®µï¼Œè€Œè¯¥è¿›ç¨‹æœªè¢«å…è®¸æ·»åŠ criticalå—æ®µï¼Œæˆ–è¯¥å—æ®µé…置与白åå•ä¸ä¸ç¬¦ã€‚ - **解决办法:** 移除进程的criticalå—æ®µæˆ–把criticalå—æ®µç¬¬ä¸€ä½ç½®0。修改原æœåŠ¡.cfgé…置文件ä¸çš„criticalå—æ®µï¼Œéžå¿…需的场景下,ä¸è¦ä½¿èƒ½criticalå—æ®µã€‚ 关于criticalå—æ®µçš„详细使用方法,请å‚考[æœåŠ¡é…ç½®](subsys-boot-init-service.md)。如果由于实现业务功能需è¦ï¼Œè¿›ç¨‹å¿…é¡»è¦ä½¿èƒ½criticalå—æ®µï¼Œåªæœ‰åœ¨è”系安全专家评审,通过安全审视åŽï¼Œæ–¹å¯ä¿®æ”¹äº§å“çš„critical_reboot进程管控白åå•`//vendor/{å…¬å¸åç§°}/{产å“åç§°}/security_config/critical_reboot_process_list.json`。 示例:rk3586çš„critical_reboot进程管控白åå•为`//vendor/hihope/rk3568/security_config/critical_reboot_process_list.json`