Если я правильно понимаю в .h файлах есть только прототипы функций осуществляющих системные вызовы, а реализация самих функций находится в glibc и по умолчанию линкуется динамически к моей программе, при системном вызове моя программа вызывает функцию из glibc, которая в свою очередь по интерапту вызывает код ядра.
Если я сделаю #define _FILE_OFFSET_BITS 64 то в заголовочных файлах прототип некоторых функций станет другим(если у меня 32 битная ОС) при этом на саму glibc это повлиять не как не может. Правильно ли я понимаю, что в glibc на самом деле несколько реализаций одних и тех же функций для разных типов аргументов и называются соответственно тоже по разному(типа как mangling в c++)? Т.е. функции которые я вызываю на самом деле не протатипы функций из glibc, а обертки которые в зависимости от дефайнов вызывают разные функции в glibc?