【发布时间】:2016-01-24 20:11:22
【问题描述】:
我是 C 和 Linux 的新手。我正在尝试编译下面的代码,但它在编译时给出了一些致命错误。任何有关解决此问题的帮助表示赞赏。
这里是代码measurecpu.c:
#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));
}
我正在尝试这样编译:
gcc -c -O2 -W -Wall -isystem /lib/modules/'uname -r'/build/include -D_KERNEL_ -DMODULE measurecpu.c
我收到此错误:
measurecpu.c:1:32: fatal error: linux/module.h: No such file or directory
#include <linux/module.h>
^
compilation terminated.
【问题讨论】:
-
如果出现构建错误,则不会出现分段错误。
-
哎呀,我的意思是我们如何构建代码。抱歉措辞错误。将编辑
-
/lib/modules/'uname -r'/build/include backticks 在这里。或者使用 $(uname -r)。 'uname -r' 将只是那个字符串,不执行替换。