Ответ 1
Да, порядок -L
имеет значение - так же, как -L
и -I
.
От man ld
-Lsearchdir
- библиотека-путь = searchdirДобавьте путь searchdir в список путей, в которых ld будет искать архивные библиотеки и ld-скрипты управления. Вы можете использовать эту опцию любое количество раз. Поиск каталогов осуществляется в том порядке, в котором они указаны в командной строке. Каталоги, указанные в командной строке, просматриваются перед каталогами по умолчанию. Все опции -L применяются ко всем параметрам -l независимо от порядка отображения параметров.
Документация GCC и более конкретно Параметры привязки будет полезен для вас
Edit
Извините, я действительно пропустил, чтобы проверить ссылку, которую вы указали. "man ld" можно просто записать в консоли.
Edit2
Я сделал простой тест -L
перед параметрами -L
, и он не показывает разницу по сравнению с -L
до -L
Итак, отвечая на ваш второй вопрос, этот
gcc -lm hello.c -Lx
равно этому
gcc -Lx -lm hello.c
libm выполняется поиск сначала в каталоге x/в обоих тестах.
Обратите внимание, что размещение -l<lib>
перед исходными файлами - это плохая практика, которая может привести к ссылкам undefined при связывании. Это правильный способ
gcc hello.c -Lx -lm