Функция "public static", поэтому я предполагаю, что это OOP-значение "static" (не требует экземпляра), а не C-значение static (file-static; локально для модуля компиляции).Поэтому функции являются внешними.
Теперь в Linux у вас есть явное право переопределять символы библиотеки, как с использованием другой библиотеки, так и в исполняемом файле.Все внешние символы в библиотеках разрешаются с использованием глобальной таблицы смещений, даже той, которую фактически определяет библиотека.И хотя функции, определенные в исполняемом файле, обычно не разрешаются таким образом, но компоновщик замечает, что символы попадут в таблицу символов из библиотек, и помещает туда ссылку на определенную исполняемым файлом.Таким образом, библиотеки увидят символ, определенный в исполняемом файле, если вы его сгенерировали.
Это явная функция, разработанная для того, чтобы вы могли выполнять такие вещи, как замена функций выделения памяти или операции переноса файловой системы.HP-UX, вероятно, не имеет этой функции, поэтому каждая библиотека в конечном итоге вызывает свою собственную реализацию, в то время как любой другой объект, у которого был бы символ undefined, увидит один из них.