定义libgcc_s.so.1的位置



首先,我在Debian VPS中,没有SUDO权限,也不可能安装任何东西。

我想运行一个程序:

./program

它通知我它需要libgcc_s.so.1:

ERROR: ld.so: object '/lib/snoopy.so' from /etc/ld.so.preload cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
./program: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory

我的问题是,有没有一种方法可以在不安装gcc multilib(没有sudo(的情况下运行程序?我想也许我可以在本地下载gcc multilib并指定执行中的路径,但我不知道怎么做。

根据编译程序的方式和运行程序的系统,您应该能够告诉系统使用LD_LIBRARY_PATH在特定目录中加载/查找其他库。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

来自ld.so 的手册页

LD_LIBRARY_PATH

A list of directories in which to search for ELF libraries at
execution time.  The items in the list are separated by either
colons or semicolons, and there is no support for escaping
either separator.
This variable is ignored in secure-execution mode.
Within the pathnames specified in LD_LIBRARY_PATH, the dynamic
linker expands the tokens $ORIGIN, $LIB, and $PLATFORM (or the
versions using curly braces around the names) as described
above in Rpath token expansion.  Thus, for example, the fol‐
lowing would cause a library to be searched for in either the
lib or lib64 subdirectory below the directory containing the
program to be executed:
$ LD_LIBRARY_PATH='$ORIGIN/$LIB' prog
(Note the use of single quotes, which prevent expansion of
$ORIGIN and $LIB as shell variables!)

从错误消息来看,您似乎正在尝试在64位系统上运行32位二进制文件。添加正确的32位库应该可以运行程序。

另一种选择是"简单地"为64位系统编译二进制文件。但如果您不是在本机64位系统上,这可能会有问题,并且可能会迫使您交叉编译。

最新更新