UPX магически преобразует двоичные файлы из динамически связанных в статически связанные библиотеки?

Я пытаюсь собрать программное обеспечение на основе qt со статическими библиотеками на gnu / linux amd64 безуспешно (qt успешно статически собран).

Теперь я вижу, что некоторые люди используют UPX. Поэтому я попробовал динамически скомпилировать, и действительно, команда file распознает двоичный файл как статически связанный.
Могу ли я доверять этому? Должен ли я рассмотреть использование вместо этого statifier?

заранее спасибо

Извините, я не был достаточно ясен.
Я пытаюсь создать приложение с использованием инфраструктуры QT, но сценарий сборки сложен и предназначен для разделяемых библиотек. Я могу построить приложение в двоичном коде, динамически связанном, это работает, но я хотел бы получить двоичный файл со статически связанными библиотеками. Я пробовал программное обеспечение UPX (http://upx.sourceforge.net/), как я видел в других темах, он использовался для преобразования двоичного файла с динамическими библиотеками в двоичный файл со статическими библиотеками.

Но это кажется мне слишком волшебным, действительно ли это работает или просто скрывает некоторые вещи, и Linux считает, что двоичный файл теперь статически связан?

Спасибо за ваши ответы.

4

Решение

Нет, UPX не превращает динамически связанную программу в статически связанную.

UPX — это упаковщик для исполняемых файлов. Это не сделает вашу программу статически связанной, потому что это на самом деле увеличение его размер, где целью UPX является сжатие.

Однако из-за того, что UPX работает как file просто увидим небольшую статически связанную заглушку.
Это процедура декомпрессии UPX.

Когда вы запускаете программу, сжатую с помощью UPX, эта заглушка запускается первой (вместо обычной main функция вашей программы). Сама заглушка статически связана, но затем она распакует вашу программу, загрузит динамические библиотеки для вашей программы и запустит ее как обычно. Таким образом, вам все еще нужны динамические библиотеки, или ваша программа не будет правильно загружена после распаковки.

Так что, как вы уже догадались, это на самом деле не волшебство, а просто скрывает некоторые вещи, чтобы уменьшить размер. Вы должны рассмотреть вопрос об открытии другого вопроса, если у вас все еще есть проблемы с этими другими библиотеками.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]