Ошибка поиска символа: ./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 таким образом; бинарные файлы обычно не совместимы между дистрибутивами. Можете ли вы найти сборку монетного двора? Если нет, вам придется построить его самостоятельно.