当前位置: 首页 > news >正文

Ubuntu环境下编译鸿蒙动态库

环境:

windows环境下的vmware,安装x86架构的ubuntu 24.04系统

下载鸿蒙command-line-tools

https://developer.huawei.com/consumer/cn/download/command-line-tools-for-hmos

解压后需要记住目录,此处以/opt/ohos目录为例

解压后command-line-tools为目录名,如果名为commandline-tools-linux-x64-6.0.2.642等带系统版本后缀,需要进入下一级目录,剪切comman-line-tools到/opt/ohos目录,形成目录路径

/opt/ohos/command-line-tools/bin/和/opt/ohos/command-line-tools/sdk/default/openharmony/native/llvm/bin/

ubuntu中需要将/opt/ohos/command-line-tools/bin/添加到PATH,可以在~/.profile添加两行

export OHOS_SDK_HOME=/opt/ohos/command-line-tools/sdk/default/openharmony export PATH=/opt/ohos/command-line-tools/bin:$PATH

其中export OHOS_SDK_HOME并不一定需要,此处添加只是为了方便使用$OHOS_SDK_HOME代替路径。

然后就可以进行编译了,此处以编译libusb为例:

安装autoreconf工具

sudo apt-get install autoconf automake libtool

有些旧版本的ubuntu系统,如果安装失败,需要先执行apt update

github找到libusb源码后下载,解压后进入libusb-master目录(也就是configure.ac的同级目录)

autoreconf -i -f -v

然后就是执行configure了,但是需要配置通过鸿蒙的sdk中的clang编译。为方便后续复用,此处将其封装为环境变量

# ~/.profile中已添加如下两行 export OHOS_SDK_HOME=/opt/ohos/command-line-tools/sdk/default/openharmony export PATH=/opt/ohos/command-line-tools/bin:$PATH # 新设置的变量,最终调用./configure的时候用,只是为了方便,并不一定非要这么做 # 设置目标架构和sysroot路径 export SYSROOT=$OHOS_SDK_HOME/native/sysroot # 设置编译器 # clang需要--target参数,这里与./configure的--host参数还不一样 export CC="$OHOS_SDK_HOME/native/llvm/bin/clang --target=aarch64-linux-ohos" # 设置编译和链接标志 export CFLAGS="--sysroot=$SYSROOT -O2 -D__MUSL__" export CPPFLAGS="--sysroot=$SYSROOT -D__MUSL__" export LDFLAGS="--sysroot=$SYSROOT"

除了PATH以外,不设置以上环境变量也可以。然后调用configure

./configure --host=aarch64-unknown-linux-musl \ --build=x86_64-linux-gnu \ --prefix=$PWD/install \ --disable-udev \ --enable-shared \ --disable-static \ CC="$CC" \ CFLAGS="$CFLAGS" \ CPPFLAGS="$CPPFLAGS" \ LDFLAGS="$LDFLAGS"

这里的--host参数是aarch64-unknown-linux-musl并不是aarch64-linux-ohos。因为configure.ac中配置的host并不支持aarch64-linux-ohos

然后调用make即可

http://www.jsqmd.com/news/461858/

相关文章:

  • 2.1进程与线程
  • 千万不能忽视!山西运城这家品牌策划厂家竟然做到了这些
  • nginx的限流配置
  • 反序列化漏洞深度解析(第一期):基础认知与原理拆解
  • 海南传统美食推荐:2026年三亚本地海鲜店必吃食谱
  • 医疗系统如何解决PDF文档粘贴乱码?
  • 基于留出法、K折交叉验证和留一法的多种机器学习模型分类对比(MATLAB实现)包含决策树、...
  • mysql报错1267 - Illegal mix of collations解决方法
  • 展望2026:年度发膜排行榜预测与黑马推荐 - 博客万
  • 嵌入式项目总结,几个嵌入式的项目。 说明文档+项目要求+实现方案+软件思路+软件代码+相关资料
  • 全功能开源拍卖系统源码 覆盖多场景,一站式搭建线上拍卖平台
  • 手把手教你拿AI Offer!从技能到Offer的完整攻略(附项目+面试)
  • postgresql管理-pg_hba.conf 文件详解管理
  • 游戏行业高防服务器应用解析
  • 2026新版Android Studio依赖framework.jar来实现对系统隐藏API的调用
  • 打开网站显示后台图片上传提示:”上传失败:存储目录创建失败!“错误怎么办|已解决
  • 文昌人气海鲜店推荐2026年文昌高性价比海鲜餐厅排行榜
  • 国家卫健委定调“十五五”!四大核心要点重塑医疗IT新版图(附技术落地指南)
  • 大龄程序员抓住AI风口:月薪30K+大模型岗位批量诞生,4个月转型实战指南!为啥要转行大模型AI大模型?
  • 什么是ADHD运动干预?主要有哪些适用于社交障碍与注意力提升的策略?
  • AI智能体在医疗领域有哪些具体的成功案例?能否详细介绍其技术实现路径
  • YOLO模型安装、数据准备及其初始用
  • 为什么打开网站总显示‘危险’?3步教你快速排查!
  • 三级密码产品怎么选?服务器密码机与云服务器密码机的决策模型
  • 人工灯检漏检率0.5%赔了15万?我用Java+YOLO+OpenCV干到1秒60瓶,漏检率0.005%
  • 手把手拆解ANSYS桥梁建模:从鱼刺骨到静力分析
  • 新网站谷歌什么时候给排名:从抓取到出排名的真实节奏
  • Windows 系统下 Ollama 安装 OpenClaw 完整教程
  • 灵活定制,高效运营 拍卖系统源码如何满足不同规模企业需求
  • 搭建Nextcloud(一):基础环境搭建