【发布时间】:2016-01-09 16:18:07
【问题描述】:
我有一个 32 位可执行二进制文件,需要在我的 x86_64 机器上运行。如果文件是可执行的(甚至是动态链接的),为什么我需要安装一些与二进制文件编程的编程语言的库相关的依赖项?
[root@server]# file TcpServer
TcpServer: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x20fc1da672a6ba3632123abc654f9ea88b34259, not stripped
[root@server]# ./TcpServer</b>
-bash: ./TcpServer: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory`
[root@server]# yum install glibc.i686
[root@server]# ./TcpServer
./TcpServer: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory`
【问题讨论】:
-
如果汽车有轮子,为什么还需要引擎来驱动?
-
因为你的可执行文件使用了它们
-
您的程序是动态链接的事实正是您必须安装这些库的原因。如果它们不存在,您的程序如何链接到它们?
-
误解太多,时间太少