HarmonyOS鸿蒙Next中仓颉在Linux下运行找不到libcangjie-runtime.so

HarmonyOS鸿蒙Next中仓颉在Linux下运行找不到libcangjie-runtime.so

在欧拉操作系统上运行编译后的hello文件出错,找不到libcangjie-runtime.so

./hello: error while loading shared libraries: libcangjie-runtime.so: cannot open shared object file: No such file or directory

链接情况:

# lld hello
        linux-vdso.so.1 (0x00007ffcbae78000)
        libcangjie-runtime.so => not found
        libsecurec.so => /usr/lib64/libsecurec.so (0x00007f0584d60000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007f0584c84000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007f0584a83000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f0584e00000)

操作系统版本:

# uname -a
Linux hcss-ecs-d585 5.10.0-182.0.0.95.r2673_211.hce2.x86_64 #1 SMP Sat Mar 15 08:57:21 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux  

# cat /etc/os-release
NAME="Huawei Cloud EulerOS"
VERSION="2.0 (x86_64)"
ID="hce"
VERSION_ID="2.0"
PRETTY_NAME="Huawei Cloud EulerOS 2.0 (x86_64)"
ANSI_COLOR="0;31"

尝试将linux_x86_64_llvm目录添加到PATH也不能解决该问题:

export PATH="/opt/tools/cangjie/bin:/opt/tools/cangjie/tools/bin:/opt/tools/cangjie/lib/linux_x86_64_llvm:$PATH"

更多关于HarmonyOS鸿蒙Next中仓颉在Linux下运行找不到libcangjie-runtime.so的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

升级到1.0版,配置一下运行环境可以了

更多关于HarmonyOS鸿蒙Next中仓颉在Linux下运行找不到libcangjie-runtime.so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next中仓颉在Linux下运行找不到libcangjie-runtime.so的问题,可能是由于动态链接库路径未正确配置导致。检查以下两点:

  1. 确保libcangjie-runtime.so已正确安装到系统库目录(如/usr/lib/usr/local/lib)或指定的LD_LIBRARY_PATH路径中。

  2. 运行ldconfig命令更新动态链接库缓存,或通过export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library临时添加库路径。

若仍无法解决,需确认鸿蒙Next的Linux环境是否完整支持该库。

这个问题是由于运行时找不到libcangjie-runtime.so动态库导致的。在Linux系统中,动态链接库的搜索路径由以下几个因素决定:

  1. LD_LIBRARY_PATH环境变量
  2. /etc/ld.so.conf配置文件
  3. 默认库路径(/lib和/usr/lib)

解决方法:

  1. 确认libcangjie-runtime.so文件确实存在于/opt/tools/cangjie/lib/linux_x86_64_llvm目录中

  2. 临时解决方案(当前会话有效):

    export LD_LIBRARY_PATH=/opt/tools/cangjie/lib/linux_x86_64_llvm:$LD_LIBRARY_PATH
    
  3. 永久解决方案:

    # 将库路径添加到配置
    echo "/opt/tools/cangjie/lib/linux_x86_64_llvm" | sudo tee -a /etc/ld.so.conf.d/cangjie.conf
    # 更新动态链接器缓存
    sudo ldconfig
    

注意:PATH环境变量用于可执行文件搜索,而LD_LIBRARY_PATH用于动态库搜索,这是两个不同的概念。

回到顶部