You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust与Kotlin/Native动态链接:无需移库至系统目录及Gradle

Rust与Kotlin/Native动态链接(无需Gradle)运行时路径配置方案

一、运行时动态库找不到的核心原因

系统默认只在标准系统目录(如Linux的/usr/lib、macOS的/usr/local/lib、Windows的System32)查找动态库,自定义路径下的库无法被自动识别,导致运行时链接错误。

二、无需移动动态库的三种解决方法

1. 临时设置环境变量指定库路径

根据操作系统类型,在运行可执行文件前设置对应环境变量,让系统优先查找指定目录:

  • Linux:
    export LD_LIBRARY_PATH=/path/to/your/rust/dylib/dir:$LD_LIBRARY_PATH
    ./your-kotlin-native-executable
    
  • macOS:
    export DYLD_LIBRARY_PATH=/path/to/your/rust/dylib/dir:$DYLD_LIBRARY_PATH
    ./your-kotlin-native-executable
    
  • Windows:
    set PATH=C:\path\to\your\rust\dylib\dir;%PATH%
    your-kotlin-native-executable.exe
    

2. 编译时嵌入库路径(仅Linux/macOS)

编译Kotlin/Native可执行文件时,通过链接参数添加rpath,让程序记住动态库的位置:

kotlinc-native your-kotlin-source.kt -o output-executable -linker-options "-Wl,-rpath,$PWD/relative/path/to/dylib/dir"

用相对路径的话,只要可执行文件和动态库的相对位置不变,移动文件夹后也能正常运行。

3. 将动态库与可执行文件放在同一目录

绝大多数操作系统会优先在可执行文件的所在目录查找动态库,把Rust编译出的动态库(如librust_lib.so、librust_lib.dylib或rust_lib.dll)和Kotlin/Native生成的可执行文件放在同一个文件夹下,直接运行即可,无需额外配置。

三、静态库无Gradle配置补充

针对你提到的静态库链接问题,正确的无Gradle操作步骤如下:

  1. 生成cinterop绑定文件时,指定静态库路径和链接参数:
cinterop -def rust_lib.def -compiler-option "-I/path/to/rust/header/dir" -library-path "/path/to/rust/static/lib/dir" -linker-options "-lrust_lib" -o rust_lib.klib
  1. 编译Kotlin代码时直接引用生成的klib:
kotlinc-native your-kotlin-source.kt -l rust_lib.klib -o output-executable

静态库会被直接嵌入可执行文件,无需处理运行时路径问题。

内容的提问来源于stack exchange,提问作者Radon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:55:11