/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libfltk.a -ldl -lX11 -lXext -lXinerama -lXfixes -lXcursor -lXrender -lXft -lm -lfontconfig \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libpng16.a \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libz.a \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libbz2.a \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libpng16.a \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libbrotlidec.a \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libbrotlicommon.a \
/home/hamster/Programs/vcpkg/installed/x64-linux/lib/libexpat.a
Она выдаёт исполнимый файл размером 603К.
Теперь я беру и просто удаляю отсюда все статические библиотеки в конце списка (fltk не трогаю), и это производит исполнимый файл размером 431К, и он тоже работает. Что здесь произошло? Если эти статические библиотеки были не нужны, почему они добавляли веса, разве линкер не удаляет сам неиспользуемое?
А ещё, я могу просто перенести -lfontconfig (динамическая) в конец команды, оставив статические библиотеки на месте, и это опять приводит к размеру 431К. Неужели динамическая библиотека зависела от этих статических в составе моего исполнимого файла? Абсурд.
Возможно, ты вместо необязательного подключения всегда принудительно подключаешь библиотеку.
Мне кажется странным, что часть библиотек ты указываешь через ключ "-l", а часть принудительно включаешь в сборку.
Обсуждают сегодня