http://forum.ubuntu.org.cn/viewtopic.php?t=462532
--------------------------------------------- 我是分割线 -------------------------------------
一个32位的可执行文件DrClientLinux, 在我的64位系统上无法运行.
点击(此处)折叠或打开
-
$ ./DrClientLinux
- -bash: ./DrClientLinux: No such file or directory
查看可执行文件类型:
点击(此处)折叠或打开
- $ file ./DcClientLinux
查看可执行文件依赖库:
点击(此处)折叠或打开
-
$ ldd DrClientLinux
- not a dynamic executable
网上找到答案:
点击(此处)折叠或打开
-
$ readelf -l DrClientLinux | grep ld-linux
- [Requesting program interpreter: /lib/ld-linux.so.2]
找了一下,没找到:
点击(此处)折叠或打开
- $ locate ld-linux.so.2
再找一下:
点击(此处)折叠或打开
-
$ locate ld-linux
-
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
- /lib64/ld-linux-x86-64.so.2
所以知道缺少32位版本,于是:
点击(此处)折叠或打开
- $ sudo apt-get install libstdc++6:i386
再次找ld-linux:
点击(此处)折叠或打开
-
$ sudo updatedb
-
$ locate ld-linux.so.2
-
/lib/ld-linux.so.2
- /lib/i386-linux-gnu/ld-linux.so.2
再次对它ldd:
点击(此处)折叠或打开
-
$ ldd DrClientLinux
-
linux-gate.so.1 => not found
-
libSM.so.6 => not found
-
libICE.so.6 => not found
-
libXi.so.6 => not found
-
libXrender.so.1 => not found
-
libXrandr.so.2 => not found
-
libXcursor.so.1 => not found
-
libXinerama.so.1 => not found
-
libfreetype.so.6 => not found
- ....
返回的就是它需要的动态链接库了, 找到其中not found的项, 如:
点击(此处)折叠或打开
- libSM.so.6 => not found
使用命令安装:
点击(此处)折叠或打开
- $ sudo apt-get install libSM6:i386
可以发现, 安装的包的名字由缺少的库的 名字+版本+:+类型 决定的, 如 libfreetype.so.6 对应的包就是 libfreetype6:i386
就是这样把所有not found的库都装上, 这样这个二进制程序应该就可以使用了.
对于我这个程序, 执行完下面的命令就会看到登录窗口了.
点击(此处)折叠或打开
- ./DrClientLinux
End!