Ошибка поиска символа: ./executableName: неопределенный символ: _ZN18QXmlDefaultHandlerC2Ev

Я пытаюсь запустить исполняемый файл на Linux Mint 16 x64, который был скомпилирован для Ubuntu 12 x64. Исполняемый файл использует Qt 5.1.1 динамически во время выполнения. Я получаю ошибку:

loaded the dummy plugin 
loaded the Linux plugin 
updating server status 
./executableName: symbol lookup error: ./executableName: undefined symbol: _ZN18QXmlDefaultHandlerC2Ev

Когда я бегу

ldd executableName | grep "not found"

поиск отсутствующих зависимостей не дает результата; все динамические зависимости, кажется, найдены, но неопределенная ошибка символа выше сохраняется.

Мысли?

2 ответа

Решение

Быстрая помощь:

$ echo _ZN18QXmlDefaultHandlerC2Ev|c++filt
QXmlDefaultHandler::QXmlDefaultHandler()

Таким образом, у вас нет конструктора для QXmlDefaultHandler, Погуглив для этого, мы можем найти здесь, что по крайней мере Qt-4.8 и Qt-5.3 содержат эту библиотеку.

Я думаю, что существует некоторая несовместимость между вашей действующей библиотекой Qt и между которой для нее был скомпилирован исполняемый файл. Мое предложение состояло в том, чтобы перекомпилировать этот исполняемый файл из исходного кода, но на вашем монетном дворе.

Не исключено, что портирование исходного пакета из ubuntu будет для вас немного сложным, в этом случае я предлагаю простую перекомпиляцию исходного кода (или даже бинарную загрузку, если она есть).

Вы не можете запускать исполняемые файлы Ubuntu на Mint таким образом; бинарные файлы обычно не совместимы между дистрибутивами. Можете ли вы найти сборку монетного двора? Если нет, вам придется построить его самостоятельно.

Другие вопросы по тегам