代码之家  ›  专栏  ›  技术社区  ›  user1244932

通过多个级别的板条箱导出共享库路径

  •  0
  • user1244932  · 技术社区  · 7 年前

    在里面 build.rs 属于 level1-sys 我有:

        let dst = cmake::Config::new(Path::new("somelib"))
            .build()
            .join("build");
        println!("cargo:rustc-link-search=native={}", dst.display());
        println!("cargo:rustc-link-lib=dylib=somelib");
    

    还有 level2 创建依赖于 一级系统 , 还有 level3 二元板条箱。

    如果我运行这个 三级 板条箱通过 cargo run 一切正常, 但如果我用手操作它,它会报告:

     error while loading shared libraries: libsomelib.so: cannot open shared object file: No such file or directory
    

    有没有办法找到通往 libsomelib.so 从…起 cargo ? 我需要这个信息的外部脚本,应该包二进制。

    显然我可以搜索 target 子目录, 但我使用调试/发布/交叉编译等等。 甚至对于混凝土变体,比如 target/release 经过几次重建 一级系统 有几个 libsomelib。所以 图书馆,比如:

    target/release/build/level1-sys-46422ddc8585ba79/libsomelib.so
    target/release/build/level1-sys-9daa760ee41fe7b8/libsomelib.so
    
    0 回复  |  直到 7 年前
    推荐文章