HarmonyOS 鸿蒙Next webrtc编译错误

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next webrtc编译错误

home/sjc/workspace/irtc

ohos_libc_dir : …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/arm-linux-ohos

clang_rt_dir : …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/llvm/lib/arm-linux-ohos/nanlegacy

ohos_libc_dir : …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos

clang_rt_dir : …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/llvm/lib/aarch64-linux-ohos/nanlegacy

ohos_libc_dir : …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/x86_64-linux-ohos

clang_rt_dir : …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/llvm/lib/x86_64-linux-ohos/nanlegacy

Done. Made 844 targets from 239 files in 170ms

ninja: Entering directory `out/release-arm64’

[1/368] AR obj/third_party/webrtc/video/adaptation/libvideo_adaptation.a

[2/368] STAMP clang_x64/obj/build/win/default_exe_manifest.stamp

[3/368] LINK ./stun_prober

FAILED: stun_prober exe.unstripped/stun_prober 

python “…/…/build/toolchain/gcc_link_wrapper.py” --output="./stun_prober" --strip="…/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/llvm/bin/llvm-strip" --unstripped-file="./exe.unstripped/stun_prober" – …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/llvm/bin/clang++ -Wl,–fatal-warnings -Wl,-O2 -Wl,–gc-sections --sysroot=…/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot -Wl,–no-undefined -Wl,–exclude-libs=libunwind_llvm.a -Wl,–exclude-libs=libc++_static.a -Wl,–exclude-libs=libvpx_assembly_arm.a --target=aarch64-linux-ohos -o “./exe.unstripped/stun_prober” …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o -Wl,–start-group @"./stun_prober.rsp"   -Wl,–end-group  …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o

ld.lld: error: duplicate symbol: _init

>>> defined at crti.s:8 (/mnt/disk/workspace/jenkins_cd_pool_high_001/harmony/out/sdk/obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/aarch64/crti.s:8)

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o:(.init+0x0)

>>> defined at crti.s:8 (/mnt/disk/workspace/jenkins_cd_pool_high_001/harmony/out/sdk/obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/aarch64/crti.s:8)

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o:(.init+0x0)

ld.lld: error: duplicate symbol: _start

>>> defined at Scrt1.c

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o:(.text+0x0)

>>> defined at Scrt1.c

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o:(.text+0x0)

ld.lld: error: duplicate symbol: _start_c

>>> defined at crt1.c:15 (obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/crt1.c:15)

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o:(_start_c)

>>> defined at crt1.c:15 (obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/crt1.c:15)

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o:(.text._start_c+0x0)

ld.lld: error: duplicate symbol: _fini

>>> defined at crti.s:16 (/mnt/disk/workspace/jenkins_cd_pool_high_001/harmony/out/sdk/obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/aarch64/crti.s:16)

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o:(.fini+0x0)

>>> defined at crti.s:16 (/mnt/disk/workspace/jenkins_cd_pool_high_001/harmony/out/sdk/obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/aarch64/crti.s:16)

>>>            …/…/…/…/…/…/sdk-linux-4.1.3.700/sdk/HarmonyOS-NEXT-DP2/base/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o:(.fini+0x0)

clang++: error: linker command failed with exit code 1 (use -v to see invocation)

[4/368] CXX clang_x64/obj/buildtools/third_party/libc++/libc++/algorithm.o

FAILED: clang_x64/obj/buildtools/third_party/libc++/libc++/algorithm.o 

这个是错误怎么解决

5 回复

开发者您好,错误是由于重复定义了一些符号导致的链接错误。请应用检查代码实现。

cke_623.png

代码没有改动呢,只是把编译器换成了华为的交叉编译器,如果是代码这边订阅重复导致的,gcc编译应该也会报错,而且看报错的位置看上去是华为sdk的编译目录 /mnt/disk/workspace/jenkins_cd_pool_high_001/harmony/out/sdk/obj/third_party/musl/intermidiates/linux/musl_src_ported/crt/aarch64/crti.s:16 我本地的机器是没有这个目录的

我们公司有这个非webview场景的适配。替换鸿蒙平台相关接口、编译webrtc源码、提供TS语言的接口。目前已经能够顺利音视频通话了,可以提供有偿分享
  • 在C程序的启动过程中,_start 是一个由操作系统(如Linux)提供的函数,它作为程序的入口点3。在调用 main 函数之前,_start 函数会执行一些必要的初始化工作,如设置运行环境、调用全局和静态变量的初始化函数等3。
  • 通常情况下,用户不需要直接编写或调用 _start 函数,因为它是由编译器和链接器自动处理的3。

针对HarmonyOS 鸿蒙Next webrtc编译错误的问题,以下是一些可能的解决方案:

  1. 确认SDK版本:请确保你使用的HarmonyOS SDK是最新版本,因为旧版本的SDK可能存在bug或不支持某些特性,导致编译失败。你可以在HarmonyOS的官方网站或开发者平台上找到最新版本的SDK。
  2. 检查编译工具链:确保你的编译工具链(如NDK、CMake等)与SDK版本兼容。新版本的SDK可能需要更新版本的编译工具。
  3. 查看错误日志:编译失败时,请仔细检查错误日志,错误日志将提供有关编译失败原因的关键信息。根据错误类型(如语法错误、链接错误、依赖错误等),选择相应的解决方案。
  4. 更新项目配置:检查项目的build.gradle和settings.gradle文件,确保配置正确,特别是依赖项和插件版本。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部