@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
В общем ваша задача указать компилятор что в хедере используются статические и порты а линкеру дать ссылку на статическую либу
В общем ваша задача указать компилятор что в хедере используются статические и порты а линкеру дать ссылку на статическую либу