首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >定义libgcc_s.so.1的位置

定义libgcc_s.so.1的位置
EN

Stack Overflow用户
提问于 2020-02-17 23:06:57
回答 1查看 1.5K关注 0票数 1

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

我想运行一个程序:

代码语言:javascript
运行
复制
./program

它告诉我它需要libgcc_s.so.1:

代码语言:javascript
运行
复制
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并指定执行过程中的路径,但我不知道如何实现。

EN

回答 1

Stack Overflow用户

发布于 2020-02-24 22:40:32

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

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

来自ld.so手册

LD_LIBRARY_PATH 在执行时搜索ELF库的目录列表。列表中的项以冒号或分号分隔,不支持转义这两个分隔符。此变量在安全执行模式下被忽略.在LD_LIBRARY_PATH中指定的路径名中,动态链接器扩展了令牌$ORIGIN、$LIB和$PLATFORM (或使用名称大括号的版本),如上面在Rpath令牌扩展中所描述的那样。因此,例如,它将导致在包含要执行的程序的目录下的lib或lib64子目录中搜索库:$LD_lib64_PATH=‘$原产地/ $LIB’prog (注意单引号的使用,这会阻止$ORIGIN和$LIB作为shell变量的扩展!)

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60271600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档