Você praticamente não pode fazer isso (ligando uma biblioteca compartilhada ao kernel ou a algum módulo do kernel).
O kernel é conceitualmente um programa independente (portanto, não sabe sobre funções C padrão de baixo nível como malloc
ou fprintf
que sua biblioteca compartilhada provavelmente usará). Os módulos do kernel ( *.ko
files) são especialmente criados e são carregados por algum código especial do kernel.
Além disso, o código de usuário (incluindo as bibliotecas) é baseado em chamadas de sistema (listadas em syscalls (2) ), que não estão disponíveis no código do kernel (já que o kernel está fornecendo o sistema chama para processos em execução em modo de usuário através de uma máquina específica).
Você pode considerar ter um programa auxiliar de usuário se comunicando com o kernel (ou seja, seu módulo de kernel), por exemplo, usando netlink (7) . Talvez procure também em systemd .
Você provavelmente deve ler mais sobre Sistemas Operacionais e ler Advanced Linux Programming para entender os aspectos da terra do usuário.
BTW, como regra geral, você deve limitar a quantidade de código do kernel adicionada ao sistema (e preferir trabalhar na região do usuário).