Статическая сборка pdns_server

При ручной сборке в ./configure у PowerDNS Authoritative Server есть ключи –enable-static и –enable-static-boost, позволяющие собрать бинарники статически, поскольку не всегда есть время и возможности угадывать, что и, главное, каких именно версий окажется установлено или доступно к установке на целевой операционке. Если вам не повезло иметь операционку, где готового пакета с pdns не существует, а готовый к сборке чего попало сервер уже налажен.

Вот только при запуске успешно собранного бинарника можно увидеть ошибку pdns_server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26′ not found (required by pdns_server)

Она говорит о том, что указанная библиотека ни черта не прилинковалась статически.

Заставить ее это сделать можно дописыванием LDFLAGS перед запуском ./configure:

LDFLAGS="-static-libstdc++" ./configure --with-modules="gmysql" --without-lua --enable-static --enable-static-boost --prefix=/

Это отвяжет зависимость от версии libstdc++ на целевой машине.

Говорят, для другого софта может пригодиться вбивание -static-libgcc, если он собирается CC, а общий -static попытается собрать всё остальное статически.

А так-то понятно, что лучше не собирать на коленке вручную, а использовать готовые пакеты требуемого софта для имеющейся операционной системы. Когда они есть в природе. Правда ведь, RHEL8?

This entry was posted in Софт and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>