2010-08-05 23 views
3

J'ai une application qui utilise eventfd et timerfd kernel syscalls. Pour cette utilisation, vous avez besoin d'un noyau moderne et d'une libc qui les supporte, au moins 2,8.Liaison statique de nouveaux symboles libc à utiliser avec une version inférieure de libc

Ma situation actuelle est, j'ai un système avec le noyau approprié, mais une version libc 2.7.11 qui ne supporte évidemment pas les fonctions requises pour les nouveaux syscalls. Mais, comme ces 2 interfaces (timerfd, eventfd) sont probablement juste un appel syscall de la libc je me demandais si je pouvais lier statiquement les symboles requis avec une libc moderne et ensuite lancer l'application sur la libc 2.7.11 avec le noyau approprié. Comme je vois les fonctions liées statiquement exécutera simplement les appels système sans utiliser la libc et cela les rendrait sûres, mais je pourrais négliger d'autres problèmes. Quelqu'un sait si cela peut sembler faisable et comment pourrais-je lier statiquement ces fonctions?

Répondre

3

Il est probablement plus faisable de créer vos propres versions compilées conditionnellement qui utilisent syscall() pour les appeler directement.

+0

lecture [ce patch] (http://accel-ppp.git.sourceforge.net/git/gitweb.cgi?p=accel-ppp/accel-ppp;a=commitdiff_plain;h=d32cf13525153b9bb961a72cded215e9866e78bd) a été très utile pour moi, c'est peut-être aussi pour quelqu'un d'autre. –