Spec-Zone.ru › GNU Make

Директива загрузки

Объекты загружаются в GNU make с помощью директивы load в вашем файле makefile. Синтаксис директивы load следующий:

load object-file …

или:

load object-file(symbol-name) …

Файл object-file динамически загружается GNU make. Если object-file не содержит пути к каталогу, то он сначала ищется в текущем каталоге. Если он не найден там или указан путь к каталогу, то будут просматриваться пути, специфичные для системы. Если загрузка по какой-либо причине завершается неудачей, make выведет сообщение и завершит работу.

Если загрузка проходит успешно, make вызовет функцию инициализации.

Если указано symbol-name, оно будет использоваться в качестве имени функции инициализации.

Если symbol-name не указано, имя функции инициализации создается путем взятия имени файла object-file до первой невалидной для имени символа буквы (буквы, цифры и символы подчеркивания являются допустимыми). К этому префиксу добавляется суффикс _gmk_setup.

С помощью одной директивы load может быть загружено несколько файлов объектов, и оба формата аргументов load могут быть использованы в одной директиве.

Функция инициализации получит имя файла и номер строки вызова операции load. Она должна вернуть значение типа int, которое должно быть 0 при ошибке и не-0 при успехе. Если возвращаемое значение равно -1, то GNU make не будет пытаться перестроить файл объекта (см. Как перестраиваются загруженные объекты).

Например:

load ../mk_funcs.so

загрузит динамический объект ../mk_funcs.so. После загрузки объекта make вызовет функцию (предполагается, что она определена динамическим объектом) mk_funcs_gmk_setup.

С другой стороны:

load ../mk_funcs.so(init_mk_func)

загрузит динамический объект ../mk_funcs.so. После загрузки объекта make вызовет функцию init_mk_func.

Независимо от того, сколько раз файл объекта появляется в директиве load, он будет загружен (и его функция настройки будет вызвана) только один раз.

После успешной загрузки объекта его имя файла добавляется к переменной .LOADED.

Если вы предпочитаете, чтобы неудачная загрузка динамического объекта не сообщалась как ошибка, вы можете использовать директиву -load вместо load. GNU make не завершится с ошибкой и не будет выведено сообщение, если объект не удалось загрузить. Неудачный объект не добавляется к переменной .LOADED, которую можно затем использовать для определения успеха загрузки.

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/load-Directive.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API