Упаковка приложения qt, скомпилированного с общими библиотеками - PullRequest
3 голосов
/ 09 марта 2010

Я недавно скачал исходный код демо-версии qt на моей машине с Linux. Ниже приведены результаты во время работы программы

  1. Я статически скомпилировал его на своем компьютере с архитектурой x86 и запустил приложение на компьютере с архитектурой x86, оно работает нормально. Но когда я взял статически скомпилированный двоичный файл на другую машину с платформой Atom, он запустился с некоторыми отсутствующими виджетами. Я обнаружил, что плагины не могут быть портированы со статической компиляцией. Кто-нибудь может сказать мне, правда ли это? Если нет, может кто-нибудь сказать мне шаги для этого?
  2. Я скомпилировал его динамически с общими библиотеками. Затем получил executalbe на Linux. Я сделал "ldd MyAppName". Он показывает мне файлы общей библиотеки, которые он использует. Но я не знаю, как их упаковать. Кто-нибудь может сказать мне шаги, чтобы упаковать это?

Я проверил в статье о развертывании приложений qt на платформах X11-linux. Но это не завершено. Кто-нибудь может дать мне подробные шаги?

Любая помощь будет оценена ......

Ответы [ 3 ]

2 голосов
/ 09 марта 2010

у вас есть дистрибутив, который не поддерживает Atom, или библиотеки, которые не скомпилированы с поддержкой для него. в любом случае - что-то где-то в вашей системе (или в вашем qt) не скомпилировано для atom

1 голос
/ 16 марта 2010

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

1 голос
/ 09 марта 2010

Проблема в том, что вы компилируете свое приложение, и его библиотеки (статические или динамические) работают для x86, а не для Atom. Возможно, вам удастся создать какой-то толстый двоичный файл (lipo?), Чтобы части вашего приложения работали на x86 и Atom, но биты, использующие библиотеки только для x86, не будут работать на Atom. (Верно? Это краткое определение вашей проблемы?)

Если у вас есть исходный код для библиотек, которые не работают в Atom, и они важны для вас, вам следует подумать о переносе кода в Atom. Если это открытый исходный код, вы можете внести свой вклад в проект. Хотя вы не дали много подробностей, мой (очень общий) подход к этому состоял бы в том, чтобы получить код на компьютере Atom, написать очень короткое тестовое приложение для библиотеки и решить проблемы.

Re # 2: Существует небольшая разница между компиляцией приложения и связыванием с общими библиотеками или динамическими библиотеками. На вашем компьютере x86, если у вас есть этот код (эти «плагины»), скомпилированные как динамические библиотеки, это почти то же самое, что статически связывать эти двоичные файлы в приложение. Эти библиотеки будут работать на x86, независимо от того, связаны они динамически или статически.

Я не уверен, очень ли это поможет - если вы получаете бинарные плагины Qt как статические или динамические библиотеки без исходного кода, вам не повезло. Отправить отчет об ошибке. Если у вас есть исходный код, вы можете сделать гораздо больше.

...