Сокращения - это просто сокращение имени библиотеки, которое компоновщик должен использовать, чтобы найти код библиотеки для привязки. Например, -lXm говорит компоновщику искать либо libXm.so, либо libXm.a, в зависимости от того, выполняет ли он динамическое или статическое связывание. Не существует общего механизма, позволяющего избежать конфликтов при именовании библиотек. Автор библиотеки выбирает имя и обычно старается избегать выбора имени, которое конфликтует с любыми другими библиотеками, особенно со стандартными системными библиотеками.
Компоновщик должен знать, какие библиотеки должны быть связаны в исполняемый файл. Если шаг компиляции и компоновки запускается из 'make', то Makefile будет вызывать компилятор с флагами -l, которые определяют библиотеки, которые будут использоваться.