Как скомпилировать с make, но также включить все зависимости - PullRequest
0 голосов
/ 15 апреля 2020

Я компилирую программу C ++ на linux, и я могу запустить make, и она все компилируется, но когда мне нужно понизить или изменить одну из ее зависимостей для другой программы, она ломается. Мне было интересно, можно ли было создать автономный исполняемый файл с зависимостями внутри? Зависимостей не так много, поэтому размер не является проблемой.

1 Ответ

0 голосов
/ 16 апреля 2020

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

Ответ "да", но это не всегда просто. Во-первых, вы должны убедиться, что на самом деле в вашей системе установлены версии библиотек stati c: библиотеки stati c и dynamici c - это разные файлы, и часто "стандартная" установка предоставляет только динамические c library.

Если вы уже компилируете код для этих библиотек, возможно, у вас уже установлены библиотеки stati c, потому что, по крайней мере, в системах GNU / Linux библиотеки stati c часто включаются в пакетах "dev" вместе с заголовочными файлами et c. необходимо для компиляции кода.

Чтобы это работало, вам нужно изменить командную строку компоновщика. Если у вас есть достаточно новая версия пакета binutils (который предоставляет компоновщик), вы можете изменить строку ссылки, чтобы заменить аргументы типа -lssl -lcrypto аргументами, такими как -l: libssl.a -l: libcrypto.a (не забудьте двоеточие после -l), и это должно быть сделано.

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