Интеграция / Портирование Qt из linux во встроенный linux - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь перенести мой код Qt с Linux на встроенный Linux. Теперь я посмотрел в Интернете и наткнулся на этот документ о том, как выполнить развертывание во встроенный linux / linux: http://doc.qt.io/archives/qt-4.7/deployment-x11.html

Так что теперь я использую подход с разделяемой библиотекой, так как думаю, что это даст мне наибольшую гибкость, а также кажется, что с последним QtSDK я не могу развернуть свое приложение статически. Я выполняю все шаги, упомянутые в инструкции, и у меня нет плагинов. Поэтому, когда я закончу эти шаги, я портирую весь свой код и зависимые библиотеки в определенный каталог: / tmp / MyFolder .... Я определяю библиотеки, которые мне нужно портировать, используя ldd -v Application.exe. Итак, теперь дело в том, что когда я портирую библиотеки на встроенный Linux-модуль, я замечаю, что некоторые из этих библиотек уже существуют в таких каталогах, как / usr / lib и / lib. Поэтому, когда я запускаю свой код, я пишу сценарий оболочки, чтобы изменить переменную среды LD_LIBRARY_PATH, чтобы проверить эти каталоги и мой собственный каталог на наличие соответствующих библиотек. Теперь, когда я запускаю свой код на встроенной Linux-системе, я получаю сообщение об ошибке:

Ошибка при загрузке общих библиотек: /tmp/ftproot/RenderingEngine/./libm.so.6: неверный файл ABI файла ELF.

Я пытался погуглить ошибку, но я все еще не знаю, что означает эта ошибка и как ее устранить. Дело в том, что библиотека libm.so.6 находится в каталоге / usr / lib, а также в моем пользовательском каталоге. Однако, как я установил свой LD_LIBRARY_PATH, он сначала проверяет мой пользовательский каталог. Может ли кто-нибудь помочь мне с этим, пожалуйста?

1 Ответ

0 голосов
/ 30 августа 2011

Ошибка ELF означает, что вы связались с библиотеками в несовместимом двоичном формате для вашей системы.Вы должны ссылаться только на библиотеки, которые были скомпилированы для целевой ОС (в данном случае, для любой версии встроенного Linux).

Попробуйте перекомпилировать ваш код и ссылаться на библиотеки, которые уже присутствовали в вашей системе (т.е. в /usr/lib).

...