加载共享对象文件时出错:没有这样的文件或目录

Error while loading shared object file: No such file or directory

我正在尝试为 GCBM(一种 C++ 碳核算工具)生成可用的二进制文件。二进制文件是从 GitHub 操作工作流生成的,可在此处作为工件使用:https://nightly.link/HarshCasper/moja.canada/actions/runs/1999997115/GCBM.zip

我下载了 ZIP,将其解压缩到 gcbm 目录中,cd 目录中,并尝试通过以下方式启动二进制文件:

./moja.cli

我收到以下错误:

./moja.cli: error while loading shared libraries: libmoja.flint.so.1: cannot open shared object file: No such file or directory

我已经尝试了各种方法来通过关注其他 Whosebug 线程来修复它,但没有任何效果。谁能帮我解决一下?

从错误中可以看出,要查找的可执行文件不存在明确的库路径。如果在另一个系统上编译的可执行文件采用您系统上不存在的硬编码库路径,有时会发生这种情况。解决方案是您必须在系统上编译源代码。最好用 STATIC 库编译它。对 Cmake(https://github.com/HarshCasper/moja.canada/blob/bffb196222e118e6797afa2bedab02dbe29dd330/Source/CMakeLists.txt#L47) 进行更改。或将共享库复制到正确的路径。

示例,如何 运行 GCBM/moja.cli 使用 ~40 个内部共享库

mkdir GCBM && cd GCBM/
unzip GCBM.zip
chmod +x moja.cli

         ## create a script moja.sh to run moja.cli :

#!/bin/sh
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
exec ./moja.cli

     ## make the script executable and run ./moja.sh