Из литературы по С++ известны наименования библиотек (например, math). В линуксовском компиляторе gcc (а возможно и в g++) эта библиотека называется libm. Исходя из этого, параметром терминальной команды (создающей запускаемый файл) нужно указать –lm (получается из libm заменой lib на l). Вопрос: из чего следует, что библиотека math в gcc именуется libm?
Если ее писал не ты, то не нужно искать причин почему библиотека названа так, как она названа.
Параметры командной строки -l заставляют компилятор искать библиотеку с заданным именем. То, что идёт после буквы l является именем (первый пробел игнорируется). Поиск производится следующий образом:
Рассматривается каждый из каталогов поиска библиотек по порядку. Дополнительные каталоги можно указать параметром -L аналогично имени библиотеки. По умолчанию этот список содержит такие каталоги:
/usr/lib/gcc/x86_64-linux-gnu/5 (может быть иная архитектура или версия GCC)/lib/x86_64-linux-gnu (архитектура может отличаться)/usr/lib/x86_64-linux-gnu (архитектура может отличаться)/lib/usr/libЕсли хотя бы в одном из каталогов поиска будет найден файл с именем libбиблиотека.so или libбиблиотека.a, поиск останавливается и выбирается файл, содержащий определения нужных функций (и иных символов).
Если в каталоге несколько файлов подходят под шаблоны выше, то без указания опции --static, выбор происходит по вышеуказанному порядку. Если заказана статическая компоновка, приоритеты меняются наоборот. По умолчанию выполняется динамическая компоновка, т.е. предполагается параметр --shared.
Примечание: названия библиотек рекомендуется перечислять после всех исходных файлов.
Что делать, если имя файла с библиотекой не начинается с букв lib? Просто укажите к нему путь относительно текущего каталога.
Компиляция программы, использующей стандартную математическую библиотеку.
gcc my_prog.c -lm
Или что то же самое
gcc my_prog.c /usr/lib/x86_64-linux-gnu/libm.so # путь может отличаться
Впрочем, на некоторых системах можно обойтись без явного указания библиотеки m.
Компиляция программы, написанной на фреймворке Qt, причём сама Qt установлена владельцем системы вручную
gcc my_prog.c -L/usr/local/lib/qt5 -lQt5Core
В качестве эксперимента, посмотрите, какие библиотеки вам доступны командой
ls /usr/lib/*.so /usr/lib/*/*.so
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости