Разница между gcc "-Xlinker" и "-Wl," варианты?
Согласно руководству GCC 6.1 по параметрам ссылки:
-Wl, опция
Опция Pass в качестве опции для компоновщика. Если опция содержит запятые, она разделяется на несколько опций в запятых.
-Xlinker
Опция Pass в качестве опции для компоновщика. Вы можете использовать это, чтобы предоставить параметры компоновщика, которые GCC не распознает.
Почему нам нужно 2 из них?
ДОБАВИТЬ 1
Точно так же, почему нам нужны как -Xassembler
и -Wa
для ассемблерных опций?
Цитата из GCC 6.1 doc о вариантах ассемблера:
-Wa, опция
Опция Pass в качестве опции для ассемблера. Если опция содержит запятые, она разделяется на несколько опций в запятых.
-Xassembler
Опция Pass в качестве опции для ассемблера. Вы можете использовать это для предоставления системных параметров ассемблера, которые GCC не распознает.
Разница заключается в следующем жирном тексте
-Wl, опция
Опция Pass в качестве опции для компоновщика. Если опция содержит запятые, она разделяется на несколько опций в запятых. Вы можете использовать этот синтаксис для передачи аргумента в эту опцию. Например, -Wl, -Map, output.map передает -Map output.map в компоновщик. При использовании компоновщика GNU вы также можете получить тот же эффект с помощью -Wl, -Map = output.map.
-Xlinker
Опция Pass в качестве опции для компоновщика. Вы можете использовать это, чтобы предоставить параметры компоновщика, которые GCC не распознает. Если вы хотите передать параметр, который принимает отдельный аргумент, вы должны использовать -Xlinker дважды, один раз для параметра и один раз для аргумента. Например, чтобы передать определения -assert, вы должны написать определения -Xlinker -assert -Xlinker. Невозможно написать -Xlinker "-assert определения", потому что это передает всю строку как один аргумент, чего не ожидает линкер.
При использовании компоновщика GNU обычно удобнее передавать аргументы в параметры компоновщика с использованием синтаксиса option = value, а не как отдельные аргументы. Например, вы можете указать -Xlinker -Map = output.map, а не -Xlinker -Map -Xlinker output.map. Другие линкеры могут не поддерживать этот синтаксис для параметров командной строки.
Я предполагаю, что 2 аналогичные функции все еще существуют из-за совместимости с обратной связью.