Я хотел бы получить список библиотек, запрошенных исполняемым файлом Gridwars.
Я год назад использовал ldd но
moi@myComputer:/opt/gridwars/gridwars_lin$ ldd gridwars
not a dynamic executable
После просмотра Интернета я обнаружил
moi@myComputer:/opt/gridwars/gridwars_lin$ readelf -d gridwars
Dynamic section at offset 0x70014 contains 27 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libX11.so.6]
0x00000001 (NEEDED) Shared library: [libGL.so.1]
0x00000001 (NEEDED) Shared library: [libGLU.so.1]
0x00000001 (NEEDED) Shared library: [libXxf86vm.so.1]
0x00000001 (NEEDED) Shared library: [libstdc++.so.5]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x804a284
0x0000000d (FINI) 0x80b29bd
0x00000004 (HASH) 0x8048168
0x00000005 (STRTAB) 0x8049268
0x00000006 (SYMTAB) 0x8048678
0x0000000a (STRSZ) 2091 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x80b811c
0x00000002 (PLTRELSZ) 1408 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8049d04
0x00000011 (REL) 0x8049cd4
0x00000012 (RELSZ) 48 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffe (VERNEED) 0x8049c14
0x6fffffff (VERNEEDNUM) 4
0x6ffffff0 (VERSYM) 0x8049a94
0x00000000 (NULL) 0x0
Правильно, у меня есть список запрошенных общих объектов. Но это все еще доставляет мне некоторые неприятности: я не могу понять две вещи ...
Как предложено в комментарии, мы можем захотеть запустить файловую утилиту на исполняемом файле.
moi@mycomputer:/opt/gridwars/gridwars_lin$ file gridwars
gridwars: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.0, stripped
Как я могу проверить, доступен ли один файл / .so / общий объект?
Почему, черт возьми, исполняемый файл gridwars не является исполняемым? Я помню, что это исполняемый файл, и я даже нашел магическую команду из трех букв, в которой перечислены запрашиваемые общие объекты и, если они есть,
Спасибо за любую помощь.
Как установить Gridwars 2
Открыть терминал и запустить их:
mkdir gridwars && cd gridwars
wget http://gridwars.marune.de/bin/gridwars_lin.zip
unzip gridwars_lin.zip
./gridwars
Затем я получил эту ошибку:
[wilf@comp gridwars]$ ./gridwars
./gridwars: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
Поэтому мне пришлось установить libstdc 5 - I - I вместо этого нашел rpm , установленный на моем компьютере с Fedora 19.
Тогда это работало очень хорошо - хорошая игра
После установки следующего пакета,
sudo apt-get install libc6:i386
sudo apt-get install libxxf86vm1:i386
sudo apt-get install libglu1-mesa:i386
sudo apt-get install libstdc++5:i386
Вы получаете
moi@somewhere:/opt/gridwars/gridwars_lin$ ldd gridwars
linux-gate.so.1 => (0xf77b2000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf765d000)
libGL.so.1 => /usr/lib/i386-linux-gnu/mesa/libGL.so.1 (0xf7604000)
libGLU.so.1 => /usr/lib/i386-linux-gnu/libGLU.so.1 (0xf757c000)
libXxf86vm.so.1 => /usr/lib/i386-linux-gnu/libXxf86vm.so.1 (0xf7576000)
libstdc++.so.5 => /usr/lib/i386-linux-gnu/libstdc++.so.5 (0xf74bc000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7479000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf745e000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf72a9000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf7287000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7282000)
libglapi.so.0 => /usr/lib/i386-linux-gnu/libglapi.so.0 (0xf726b000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf7259000)
libXdamage.so.1 => /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xf7254000)
libXfixes.so.3 => /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xf724d000)
libX11-xcb.so.1 => /usr/lib/i386-linux-gnu/libX11-xcb.so.1 (0xf724a000)
libxcb-glx.so.0 => /usr/lib/i386-linux-gnu/libxcb-glx.so.0 (0xf7232000)
libxcb-dri2.so.0 => /usr/lib/i386-linux-gnu/libxcb-dri2.so.0 (0xf722d000)
libdrm.so.2 => /usr/lib/i386-linux-gnu/libdrm.so.2 (0xf721f000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf7136000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7119000)
/lib/ld-linux.so.2 (0xf77b3000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf7115000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf710e000)
И игра работает.