LINUX.ORG.RU

История изменений

Исправление devsdc, (текущая версия) :

Хотя, с другой стороны, какая линкеру разница в какую либу символы резолвить. Что мешает подменить скомпиленной либе glibc на musl?

Но линкер не из воздуха берет информацию о том, какие символы ему нужны, а из исходников. Исходники, которые пишешь именно ты, как правило, только используют символы из какого-то API, но не объявляют их. Объявления в твоих исходниках появятся из хедеров библиотек. А они уже могут (и будут!) содержать детали реализации библиотеки — хоть стандартной, хоть нет. Например, ссылаться на какие-то внутренние символы библиотеки. В итоге еще на этапе трансляции, еще до линковки, ты уже завяжешься на кишки используемой реализации. Короче, линкеру есть разница, в какую либу символы резолвить, потому что попросту набор символов может различаться.

Ну и тут выше сказали про вид структур. Это всё о том, что в общем случае библиотеки с совпадающим API не обязаны иметь одинаковое ABI.

Исходная версия devsdc, :

Хотя, с другой стороны, какая линкеру разница в какую либу символы резолвить. Что мешает подменить скомпиленной либе glibc на musl?

Но линкер не из воздуха берет информацию о том, какие символы ему нужны, а из исходников. Исходники, которые пишешь именно ты, как правило, только используют символы из какого-то API, но не объявляют их. Объявления в твоих исходниках появятся из хедеров библиотек. А они уже могут (и будут!) содержать детали реализации библиотеки — хоть стандартной, хоть нет. Например, ссылаться на какие-то внутренние символы библиотеки. В итоге еще на этапе трансляции, еще до линковки, ты уже завяжешься на кишки используемой реализации. Короче, линкеру есть разница, в какую либу символы резолвить, потому что попросту набор символов может различаться.