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即可

相关推荐
sxstj4 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
天疆说4 小时前
Ubuntu 26.04 下 Intel Meteor Lake 核显 + NPU 驱动配置与 PyTorch NPU 推理实测
linux·pytorch·ubuntu
woshihuanglaoshi4 小时前
鸿蒙技术进阶全景高级成长体系:从初中级到架构师的技能树/学习路径/项目实战/认证体系系统性方法论
学习·华为·harmonyos
mounter6255 小时前
突破单点限制:BPF 多跟踪点高效附加机制与新 ftrace 架构解析
linux·ebpf·linux kernel·kernel·ftrace
刘某的Cloud5 小时前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
小此方5 小时前
Re:Linux系统篇(五十四)线程篇 · 七:互斥锁的底层实现原理:从硬件上下文、原子交换指令(Swap)到并发封装实战
linux·运维·驱动开发
meilindehuzi_a5 小时前
TypeScript面试题:interface 与 type:相同点、核心区别与选择指南
java·ubuntu·typescript
轻口味5 小时前
端侧 AI 赋能鸿蒙版 Obsidian:轻规划基于 HarmonyOS 7.0 图像超分特性的体验突破与开发实战
人工智能·华为·harmonyos·鸿蒙
郭涤生5 小时前
rootfs 详解与裁剪优化记录
linux·c++·bsp
铁锚6 小时前
解决Ubuntu执行sudo时 unable to resolve host 报错问题
linux·数据库·ubuntu