Статическое связывание новых символов libc для использования с более ранней версией libc

У меня есть приложение, которое использует системные вызовы ядра eventfd и timerfd. Для этого вам нужно современное ядро ​​и libc, который их поддерживает, по крайней мере 2.8.

Моя текущая ситуация такова: у меня есть система с правильным ядром, но версия libc 2.7.11, которая, очевидно, не поддерживает необходимые функции для новых системных вызовов.
Но, поскольку эти 2 интерфейса (timerfd,eventfd), вероятно, просто вызов системного вызова из libc Мне было интересно, могу ли я статически связать необходимые символы с современной libc, а затем запустить приложение на libc 2.7.11 с правильным ядром.

Как я вижу, статически связанные функции будут просто выполнять системные вызовы без использования libc, и это сделает их безопасными, но я мог упустить из виду другие проблемы.

Кто-нибудь знает, звучит ли это осуществимо и как я могу статически связать только эти функции?


person Arkaitz Jimenez    schedule 05.08.2010    source источник


Ответы (1)


Вероятно, более целесообразно создавать свои собственные условно скомпилированные версии, которые используют syscall() для прямого вызова.

person caf    schedule 06.08.2010
comment
Чтение этот патч был очень полезен для меня, может быть и для кого-то еще. - person Fabian Henze; 15.11.2012