Я действительно не знаю, что еще делать, кроме как поискать man gcc
, что вы должны иметь в виду для будущих вопросов, связанных с вызовом gcc.Итак:
-Xlinker option
Передать опцию компоновщику как опцию.Вы можете использовать это для предоставления системных опций компоновщика, которые GCC не знает, как распознать.
Если вы хотите передать опцию, которая принимает отдельный аргумент, вы должны использовать -Xlinker дважды, один раз для опциии один раз за аргумент.Например, чтобы передать определения -assert, вы должны написать определения -Xlinker -assert -Xlinker.Не получается написать -Xlinker «-assert определения», потому что это передает всю строку как один аргумент, а это не то, что ожидает компоновщик.
При использовании компоновщика GNU это обычно более удобнопередавать аргументы в параметры компоновщика, используя синтаксис option = значение, а не как отдельные аргументы.Например, вы можете указать -Xlinker -Map = output.map вместо -Xlinker -Map -Xlinker output.map.Другие компоновщики могут не поддерживать этот синтаксис для параметров командной строки.
-Wl, параметр
Передать параметр в качестве параметра компоновщику.Если опция содержит запятые, она разделяется на несколько опций через запятую.Вы можете использовать этот синтаксис для передачи аргумента опции.
Например, -Wl, -Map, output.map передает -Map output.map компоновщику.При использовании компоновщика GNU, вы также можете получить тот же эффект с -Wl, -Map = output.map.
Как вы можете видеть, с той лишь разницей, что -Wl
позволяетВы можете указать несколько аргументов через запятую, например -Wl,-rpath,/my/libs
, которую вы не можете сделать с -Xlinker
;с другой стороны, -Xlinker
может быть немного более информативным.Сделайте ваш выбор.Также проверьте другие компиляторы (nvcc
на ум и clang
), чтобы узнать, согласен ли кто-нибудь из них с синтаксисом, а затем используйте его для переносимости, если это важно для вас.