Задать вопрос

Статическое подключение zlib в .so?

У меня есть код на C++, который использует zlib. Я хочу на линуксе его скомпилировать в .so библиотеку, но чтобы команда ldd не показывала libz.so или libz.so.1 (чтобы zlib был встроен в .so). Как это сделать с использованием g++? (желательно g++, если нельзя, то как это сделать с помощью CMake?)
  • Вопрос задан
  • 284 просмотра
Подписаться 3 Простой Комментировать
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
У меня есть код на C++, который использует zlib. Я хочу на линуксе его скомпилировать в .so библиотеку, но чтобы команда ldd не показывала libz.so или libz.so.1 (чтобы zlib был встроен в .so).

Ключами линковщика -Bstatic и -Bdynamic можно переключать режим линковки библиотек:
g++ -shared foo.cc -o libfoo.so -Wl,-Bstatic -lz -Wl,-Bdynamic

Но если так сделать, то можно заметить, что не всякую статическую библиотеку можно прилинковать к .so, а только такую, объектники которой собраны с флагом -fpic.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Что то типа - d zlib. Static. A
В общем ваша задача указать компилятор что в хедере используются статические и порты а линкеру дать ссылку на статическую либу
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы