Нет волшебства make-файла, которое превращает разделяемые библиотеки в статические.Вам необходимо установить статические версии библиотек в вашей системе, а затем в своем make-файле указать, что статические версии библиотек должны быть связаны.
Похоже, что статические библиотеки вам нужно установитьявляются:
libevent_core.a
libevent_extra.a
libevent.a
libevent_pthreads.a
libsystemd.a
Установив эти библиотеки, вы бы изменили свой make-файл, чтобы статически связать их, изменив:
LIBS = -levent_core -levent_extra -levent -levent_pthreads -lsystemd
на:
LIBS = -Wl,-Bstatic -levent_core -levent_extra -levent -levent_pthreads -lsystemd -Wl,-Bdynamic
Однако , вы не можете сделать это точно, потому что нет статической версии libsystemd
. Вот почему .
В вашем списке есть статические версии других библиотек.Вы можете установить их, установив пакет разработки libevent
(возможно, пакет libevent-dev
или libevent-devel
, в зависимости от вашего дистрибутива Linux).Затем вы можете статически связать их с:
LIBS = -Wl,-Bstatic -levent_core -levent_extra -levent -levent_pthreads -Wl,-Bdynamic -lsystemd
Обратите внимание , что в -Wl,-Bstatic
или -Wl,-Bdynamic
нет пробелов.Параметры GCC в форме -Wl,...
означают, что GCC должен передать параметры ...
до вызова компоновщика.
Вот документация по параметрам компоновщика