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



@Klucva

У меня есть код на C++, который использует zlib. Я хочу на линуксе его скомпилировать в .so библиотеку, но чтобы команда ldd не показывала libz.so или libz.so.1 (чтобы zlib был встроен в .so). Как это сделать с использованием g++? (желательно g++, если нельзя, то как это сделать с помощью CMake?)


Решения вопроса 1



@jcmvbkbc

У меня есть код на 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

Что то типа — d zlib. Static. A
В общем ваша задача указать компилятор что в хедере используются статические и порты а линкеру дать ссылку на статическую либу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *