CMake: создание статического бинарного файла - PullRequest
3 голосов
/ 08 февраля 2011

Я пытаюсь построить статический бинарный файл с помощью CMake.

Я осмотрелся и нашел ряд неописательных решений (например, добавил флаг компоновщика "-static"), но я не уверен, как их протестировать.

Как сделатьЯ знаю, была ли определенная библиотека (например, Threading) статически встроена в мой бинарный файл?

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Как говорит Тренки, используйте ldd, чтобы получить список динамически связанных библиотек, от которых зависит ваш исполняемый файл, и проверьте, чтобы убедиться, что код, который вы хотели статически связать, , а не .

Вы также можете использовать команды nm и strings, чтобы получить дамп программных символов и читабельного текста, соответственно, в вашем исполняемом файле. Используйте grep для фильтрации этого вывода по идентификаторам в вашей статической библиотеке, на которые вы ссылаетесь в своем коде, например по именам функций.

Наконец, вы можете использовать команду objdump, чтобы получить список разборок вашей программы. В нем должны появиться функции статической библиотеки.

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

1 голос
/ 01 апреля 2011

В Linux вы также можете использовать команду ldd, которая показывает, к каким библиотекам ваши двоичные ссылки подключаются динамически.

1 голос
/ 08 февраля 2011

Не относится к CMake, но если вы работаете в системе UNIX, утилита file может по крайней мере сказать вам, использует ли ваш двоичный файл разделяемые библиотеки или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...