Поиск каталога для библиотек линковки
Поиск каталога применяется особым образом к библиотекам, используемым с линковщиком. Эта специальная функция срабатывает, когда вы пишете предшественник, имя которого имеет вид ‘-lname’. (Вы можете заметить нечто странное, потому что предшественник обычно является именем файла, а имя файла библиотеки обычно выглядит как libname.a, а не как ‘-lname’.)
Когда имя предшественника имеет вид ‘-lname’, make обрабатывает его особым образом, ища файл libname.so, а если он не найден, то файл libname.a в текущем каталоге, в каталогах, указанных в соответствующих vpath путях поиска и VPATH пути поиска, а затем в каталогах /lib, /usr/lib и prefix/lib (обычно /usr/local/lib, но версии make для MS-DOS/MS-Windows ведут себя так, как будто prefix определен как корень дерева установки DJGPP).
Например, если на вашей системе есть библиотека /usr/lib/libcurses.a (и нет файла /usr/lib/libcurses.so), то
foo : foo.c -lcurses
cc $^ -o $@
приведет к выполнению команды ‘cc foo.c /usr/lib/libcurses.a -o foo’, когда foo старше, чем foo.c или /usr/lib/libcurses.a.
Хотя по умолчанию набор файлов, которые будут искаться, это libname.so и libname.a, это настраиваемо через переменную .LIBPATTERNS. Каждое слово в значении этой переменной — это строка шаблона. Когда виден предшественник типа ‘-lname’, make заменит процент в каждом шаблоне в списке на name и выполнит вышеупомянутые поиски каталогов, используя каждое имя файла библиотеки.
Значение по умолчанию для .LIBPATTERNS это ‘lib%.so lib%.a’, что обеспечивает описанное выше поведение по умолчанию.
Вы можете полностью отключить расширение библиотек линковки, установив эту переменную в пустое значение.
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Libraries_002fSearch.html