суббота, 17 декабря 2011 г.

"undefined symbol" в бинарниках




Если бинарник компилировался с новейшей версией, а в дистрибутиве по недосмотру, или какой другой причине, была установлена старая версия. В этом случае программа может вывалиться с сообщением undefined symbol:

kdevelop: symbol lookup error: /usr/lib/kde4/kdevcmakemanager.so: undefined symbol: _ZN16CMakeParserUtils13includeScriptERK7QStringN8KDevelop22ReferencedTopDUContextEP16CMakeProjectDataS2_


На первый взгляд, не совсем понятно, что за символ такой, и к чему он принадлежит.

Но в Linux есть утилиты binutils, среди которых есть программка c++filt, которая, собственно, и может декодировать такие символьные строки.

c++filt _ZN16CMakeParserUtils13includeScriptERK7QStringN8KDevelop22ReferencedTopDUContextEP16CMakeProjectDataS2_

результат выполнения:

CMakeParserUtils::includeScript(QString const&, KDevelop::ReferencedTopDUContext, CMakeProjectData*, QString const&)

Применять для фильтрации "undefined symbol" можно командой

ldd -d -r nameOfBinFile

где nameOfBinFile имя актуального бинарника, который можно использовать как переменную в цикле обработки скрипта.

затем преобразовывать из низкоуровневого представления в более простой для понимания текстовой вид.

Источник http://eduard-x.blogspot.com/2011/10/undefined-symbol.html

вторник, 6 декабря 2011 г.

samba и антивирус


Задача: 
Настроить проверку фалов антивирусом на сетевой шаре(файлопомойке).


Варианты решения:
Существует 2 способа антивирусной проверки шар samba.
  1. samba-vscan - виртуальная файловая система для samba.
  2. Создание виртуальной файловой системы clamfs.