Menu

libstdc++ и dproto под CentOS 6.5

Что делать, если на сервере Counter-Strike под Linux не подгружается один из модулей amxx?

Предполагаем, что в качестве операционной системы установлен дистрибутив Linux CentOS (Fedora/Ubuntu/Debian).

Тогда вполне возможно, что клиент только с одной версией протокола может работать с сервером Counter-Strike на 64-битной системе (не грузится dproto).

В консоли сервера CS 1.6 набираем meta list, чтобы проверить состояние:

dproto_i386.so badf load dproto_i386.so v - ini - -

Должно быть RUN в каждой строке, но не FAIL или BAD. Попробуем решить эту проблему!

В первую очередь командой ldd надо проверить требуемые библиотеки:

[root]# ldd dproto_i386.so
ldd: warning: you do not have execution permission for `./dproto_i386.so'
        linux-gate.so.1 =>  (0x002e4000)
        libdl.so.2 => /lib/libdl.so.2 (0x002e8000)
        libm.so.6 => /lib/libm.so.6 (0x0083c000)
        libstdc++.so.6 =>  not found
        libc.so.6 => /lib/libc.so.6 (0x002ed000)
        /lib/ld-linux.so.2 (0x00867000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00927000)

Как видим, не достаёт библиотеки libstdc++.so.6 - проблема в том, что нужна 32-битная версия (для обеспечения совместимости).

В такой ситуации при попытке подключения к серверу CS16 будем видеть нижеследующее сообщение об ошибке на стороне клиента:

This server is using a newer protocol (48) than your client (47). You should check for updates to your client.

Проблема легко решается добавлением недостающего пакета:

apt-get install ia32-libs

или 

yum -y install ia32-libs

Получается не всегда поставить libstdc++.so.6 таким путем. Но мы готовы копать глубже в случае необходимости!

Если у Вас возникла ошибка:

error while loading shared libraries: libstdc++.so.6: в centos6

тогда смотрим, к чему относится эта библиотека:

yum whatprovides libstdc++.so.6

Допустим, у нас CentOS 6.5, тогда видим ответ:

libstdc++-4.4.6-4.el6.i686 : GNU Standard C++ Library

Устанавливаем, явно указывая нашу архитектуру через точку после имени:

yum -y install libstdc++.i686

Если все равно ругается, возможно, нужна установка 32-битной или 64-битной.

Пробуйте с i386 и x86_64 на конце, в зависимости от архитектуры.

Должно быть:

[root]# ldd dproto_i386.so
ldd: warning: you do not have execution permission for `./dproto_i386.so'
        linux-gate.so.1 =>  (0x002e4000)
        libdl.so.2 => /lib/libdl.so.2 (0x002e8000)
        libm.so.6 => /lib/libm.so.6 (0x0083c000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00bf8000)
        libc.so.6 => /lib/libc.so.6 (0x002ed000)
        /lib/ld-linux.so.2 (0x00867000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00927000)

2 комментарии

Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top