ссылка означает, что в программе, в библиотеке которой будет найден символ, это необходимо как для статических, так и для динамических библиотек.
Может быть несколько версий нужной библиотеки, и это то, о чем ld.so, не , связывающее , а загрузка динамических библиотек. Таким образом, динамически связанная программа не должна открывать каждую библиотеку в системе, чтобы найти ее символы, она будет открывать только правильную. Таким образом, загрузчик библиотеки просто ищет имена файлов, чтобы найти нужную библиотеку для загрузки.
Компиляторы также имеют библиотеку по умолчанию, которую не нужно помещать в командную строку, но не так много. Если вы хотите узнать эти значения по умолчанию, просто добавьте -v в командную строку gcc.