Изменения в.o файлах после компиляции
Я собрал собственное ядро и могу выполнить системный вызов, но теперь я хочу изменить логику в ссылке на файл.o в Makefile
obj-y + = sys_calls_test.o
sys_calls_test.o имеет
#include<linux/linkage.h>
asmlinakge long sys_hello(void)
{
printk("hello");
}
Я изменил это
#include<linux/linkage.h>
asmlinakge long sys_hello(void)
{
printk("Testing this block");
}
Когда я пытаюсь перекомпилировать файл sys_calls_test.c, изменения не отображаются
я использовал
gcc file_name.c -o testing_comp
./testing_comp
Мой файл sys_calls_test.c, на который я ссылался в make-файле ядра.
#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;
}
Я все еще вижу "Привет!", А не "Тестирование этого блока".
Может ли кто-нибудь указать мне, если я должен перекомпилировать исходный код Linux и почему мои изменения не отображаются. Нужно ли мне использовать команду make и пересобрать весь исходный код ядра, чтобы показать это изменение, так как я изменил ссылку.o в Makefile ядра
большое спасибо
1 ответ
Файлы.o компилируются непосредственно в выходной исполняемый файл, поэтому, если вы хотите, чтобы ваши изменения появились, вам придется перекомпилировать ядро, которое зависит от него.
Вы думаете о динамически связанных / совместно используемых объектных файлах, которые в linux обычно сохраняются как файлы.so.
Пожалуйста, обратитесь к этому вопросу stackoverflow для более подробной информации: