Muda para arquivos .o depois de compilar

0

Eu construí um kernel personalizado e sou capaz de fazer minha chamada de sistema, mas agora eu quero mudar a lógica na referência de arquivo .o no Makefile

obj-y += sys_calls_test.o

o sys_calls_test.o tem

#include<linux/linkage.h>
asmlinakge long sys_hello(void)
{
printk("hello");
}

Eu modifiquei para

#include<linux/linkage.h>
asmlinakge long sys_hello(void)
{
printk("Testing this block");
}

Quando tento recompilar meu arquivo sys_calls_test.c, as alterações não são exibidas

eu usei

gcc file_name.c -o testing_comp
./testing_comp

Meu arquivo sys_calls_test.c que referenciei no makefile do kernel.

#include <stdio.h>
#include <linux/unistd.h>
#include <sys/syscall.h>

#define sys_hello 349

int main(void)
{
    int c = syscall(sys_hello, a, b);
    printf("System call returned %d\n", c);
    return 0;
}

Ainda estou vendo "Olá," e não "Testando este bloco"

Alguém pode me indicar se eu tenho que recompilar a fonte do Linux e por que minhas alterações não estão aparecendo? Devo precisar usar o comando make e reconstruir toda a origem do kernel para mostrar essa alteração desde que eu mudei a referência .o no Makefile do Kernel

Muito obrigado

    
por rao 25.10.2013 / 19:23

1 resposta

1
Os arquivos

.o são compilados diretamente no executável de saída, então se você quiser que suas mudanças apareçam você terá que recompilar o kernel que depende dele.

Você está pensando em arquivos dinamicamente vinculados / objetos compartilhados, que no linux geralmente são salvos como arquivos .so.

Por favor, consulte esta questão stackoverflow para mais detalhes:

link

    
por ImaginaryRobots 25.10.2013 / 19:38