鸿蒙Hi3861问题解决-[OHOS ERROR] clang not found, install it please

当在使用DevEcoStudio进行HarmonyOS开发时遇到[OHOSERROR]clangnotfound的问题,可以通过安装gn、ninja和llvm来解决。安装这些工具可以通过DevEcoStudio的组件管理或手动下载。安装后需配置环境变量,并执行source~/.bashrc使设置生效。如果仍然遇到问题,可能需要重启Ubuntu系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

        在使用DevEco进行编译时出现[OHOS ERROR] clang not found, install it please问题,导致编译失败,这里做个问题记录。

二、解决

        这种问题其实还是工具链安装不全造成的。 

      安装gn

        这里用的是VSCode DevEco组件,里边包含了gn组件的安装,可以手动点击安装

        在“工程配置”中,选择“添加实用工具”,选择"gn",然后点击“下载未安装的工具”。

 

         因为这里已经安装过gn了,所以在菜单中没有。

        也可以手动下载下载后解压。提供链接:https://repo.huaweicloud.com/harmonyos/compiler/gn/latest/linux/gn-linux-x86-1717.tar.gz

 

     安装ninjia

        安装方式同gn,也是在DevEco中点击安装。

        也可以手动下载下载后解压。提供链接:https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.10.1/linux/ninja-linux-x86-1.10.1.tar.gz

 

      安装llvm和clang

        这个需要手动下载。直接下载压缩文件即可。提供下载链接:https://repo.huaweicloud.com/harmonyos/compiler/clang/latest/linux/llvm.tar.gz

      配置环境

        执行如下代码

gedit ~/.bashrc

         在文件的末端添加gn、ninja、和llvm的环境变量

        这里需要添加路径,如果是手动下载的,那就将gn、ninjia和llvm解压的路径写上即可。

        如果是gn和ninja是通过DevEco安装的,在安装完的终端中,会打印gn和ninja的安装路径,直接拷贝过去即可。

export PATH=/home/qwer/.deveco-device-tool/resources/utilities/gn/1717:$PATH
export PATH=/home/qwer/.deveco-device-tool/resources/utilities/ninja/1.10.1:$PATH
export PATH=/home/qwer/myllvm/llvm/bin:$PATH

        本人是通过DevEco安装的,所以,gn和ninja的路径在.deveco-device-tool下。

        保存后,在终端中执行如下指令,使设置立即生效

source ~/.bashrc

        成功后,在终端中查看llvm和clang的版本

clang -v
llvm-as --version

        有如下结果,表示设置成功。

         此时,再编译一次,应该就会成功。如果还是提示clang not found,则重启ubuntu,应该就可以了。

### 关于 `Cannot utime: Operation not permitted` 错误 当使用 `arm-linux-ohos-clang++` 进行编译时遇到 `Cannot utime: Operation not permitted` 的错误,通常是因为文件系统的权限设置或目标文件的属性不匹配所导致。以下是可能的原因以及解决方案: #### 可能原因分析 1. **文件系统只读模式** 如果正在操作的目标目录位于只读挂载点上,则无法修改文件的时间戳或其他元数据[^3]。 2. **跨分区复制问题** 当源文件来自不同的文件系统(例如 NTFS 或 FAT32),这些文件系统可能不具备完整的 Unix 权限支持,从而导致时间戳更新失败[^4]。 3. **SELinux 策略限制** SELinux 安全策略可能会阻止某些特定的操作,比如更改文件的时间戳[^5]。 4. **文件被其他进程占用** 文件如果正被另一个程序锁定或者打开,也可能引发类似的权限拒绝错误[^6]。 --- ### 解决方案 #### 方法一:检查并调整文件系统权限 确保当前工作目录及其子目录具有写入权限。可以通过以下命令验证和修复: ```bash ls -ld /path/to/your/directory chmod u+w /path/to/your/directory ``` #### 方法二:禁用 SELinux (临时测试) 为了排除 SELinux 是否是问题根源,可以尝试将其暂时设为宽容模式: ```bash setenforce 0 ``` 注意这仅用于调试目的,在生产环境中应重新启用强制模式并通过配置允许必要的访问行为[^7]。 #### 方法三:切换到兼容性更好的文件系统 对于开发环境中的重要路径,建议避免使用不完全支持 POSIX 标准的文件系统(如 vfat)。改用 ext4 等更全面支持 Linux 特性的格式可以帮助规避此类问题[^8]。 #### 方法四:清理构建缓存 有时旧版本残留的数据也会引起冲突。执行一次彻底清洁后再重建项目可能是有效的办法之一: ```bash rm -rf build/ mkdir build && cd build cmake .. make ``` #### 方法五:升级工具链至最新稳定版 考虑到软件本身可能存在 bug ,确认使用的 clang 工具链是否是最新的官方发布版本也很关键 。必要时可考虑下载预编译包或是按照文档指南自行组装定制化实例来获得最佳体验效果[^9]。 --- ### 总结 上述方法涵盖了从基础层面排查直至高级调优的不同角度处理思路。具体实施过程中需依据实际场景灵活选用合适的技术手段加以应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值