C ve Linux'ta yeniyim. Aşağıdaki kodu derlemeye çalışıyorum ama derlerken bazı önemli hatalar veriyor. Bunu düzeltmek için herhangi bir yardım takdir etti.Çekirdek kodunu C'de nasıl derleriz?
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/hardirq.h>
#include <linux/preempt.h>
#include <linux/sched.h>
#include<stdio.h>
int main() {
uint64_t start, end;
int i=0;
asm volatile ("CPUID \ n \ t" "RDTSC \ n \ t" "mov %%edx, %0 \ n \ t" "mov %%eax, %1 \ n \ t": "=r" (cycles_high), "=r" (cycles_low):: "%rax", "%rbx", "%rcx", "%rdx");
for(i=0; i<200000;i++) {}
asm volatile ("RDTSCP \ n \ t" "mov %%edx, %0 \ n \ t" "mov %%eax, %1 \ n \ t" "CPUID \ n \ t": "=r" (cycles_high1), "=r" (cycles_low1):: "%rax", "%rbx", "%rcx", "%rdx");
start = (((uint64_t)cycles_high << 32) | cycles_low);
end = (((uint64_t)cycles_high1 << 32) | cycles_low1);
printk(KERN_INFO " \ n function execution time is %llu clock cycles",(end - start));
}
ben bu şekilde derlemek çalışıyorum: Genellikle
measurecpu.c:1:32: fatal error: linux/module.h: No such file or directory
#include <linux/module.h>
^
compilation terminated.
o zaman bölme hatalarına alamayan yapı hatalarını alırsanız. –
oops Yani kodu nasıl kurarız. yanlış ifadeler için üzgünüm. – Wanderer
/lib/modules/'uname -r'/build/include <öğesini düzenleyecektir - bence burada ** backticks ** 'a ihtiyacınız var. Ya da $ (uname -r) kullanın. 'uname -r' sadece bu dize olacak, hiçbir ikame yapılmıyor. – Ctx