Каково различие между-I и-L в make-файле?

Все зависит от вашего собственного выбора.

Я всегда предпочитаю использовать промежуточное программное обеспечение в маршруте как группу, которая поддерживает централизацию, и я могу легко их найти.

Route::group(['middleware' => ['middleware1']], function () {
    // your routes under middleware1
});

Route::group(['middleware' => ['middleware2']], function () {
    // your routes under middleware2
});
53
задан TylerH 27 October 2017 в 03:52
поделиться

3 ответа

Они обычно - часть командной строки компоновщика, и или предоставляются непосредственно в целевом действии или чаще всего присваиваются make переменная, которая будет расширена для формирования команды ссылки. В этом случае:

-L путь к каталогам, содержащим библиотеки. Путь поиска для библиотек.

-l название библиотеки, с которой Вы хотите связаться.

, Например, если бы Вы хотите связаться с библиотекой ~/libs/libabc.a, Вы добавили бы:

-L$(HOME)/libs -labc

Для использования в своих интересах неявного правила по умолчанию для соединения добавьте эти флаги к переменной LDFLAGS, как в [1 117]

LDFLAGS+=-L$(HOME)/libs -labc
<час>

, Это - хорошая привычка отделиться LDFLAGS и LIBS, например

# LDFLAGS contains flags passed to the compiler for use during linking
LDFLAGS = -Wl,--hash-style=both
# LIBS contains libraries to link with
LIBS = -L$(HOME)/libs -labc
program: a.o b.o c.o
        $(CC) $(LDFLAGS) $^ $(LIBS) -o $@
        # or if you really want to call ld directly,
        # $(LD) $(LDFLAGS:-Wl,%=%) $^ $(LIBS) -o $@

, Даже если это может работать иначе, эти -l..., директивы, как предполагается, идут после объекты та ссылка те символы. Некоторая оптимизация (-Wl,--as-needed является самым очевидным) перестанет работать, если соединение будет сделано в неправильном порядке.

91
ответ дан ephemient 7 November 2019 в 08:31
поделиться

К действительно grok make-файл, у Вас должно также быть хорошее понимание командных строк для всех компонентов набора инструментальных средств Вашего проекта. Опции как -I и -L не поняты под, делают себя. Скорее сделайте, пытается создать командную строку, которая выполнит инструмент для преобразования необходимого как условие файла в конечный файл.

Часто, который является C или исходным файлом C++, скомпилированным в объектный файл и в конечном счете связанным для получения исполняемого файла.

В этом случае, необходимо видеть руководство для компилятора и особенно биты, связанные с параметрами командной строки, которые это понимает.

Все, что сказало в общих обозначениях, те определенные опции, довольно стандартно среди компиляторов и компоновщиков. -I добавляет каталог к списку мест, искавших компилятором файл, названный на #include, строка, и -L добавляет каталог к списку мест, искавших компоновщиком библиотеку, названную с -l опция.

нижняя строка - то, что "язык" make-файла является комбинацией синтаксиса самого make-файла, Ваша оболочка, как известный для создания (обычно /bin/sh или что-то подобное), общие команды оболочки (такой как rm, cp, install, и т.д.), и команды характерный для компилятора и компоновщика (например, ввод gcc -v --help при приглашении оболочки даст Вам почти завершенный (и чрезвычайно долго) список опций, понятых под gcc как одна начальная точка).

26
ответ дан RBerteig 7 November 2019 в 08:31
поделиться

Одна вещь отметить состоит в том, что это опции, переданные компилятору/компоновщику. Таким образом, необходимо смотреть на страницы/документацию человека компилятора для знания их роли.

2
ответ дан sateesh 7 November 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: