wsl中编译linux内核模块

在WSL 2环境中,linux/atomic.h是内核级别的头文件,但是WSL 2并不包含完整的Linux内核源代码。因此,即使您安装了linux-libc-dev包,也无法找到该文件。(安装linux-libc-dev包命令:sudo apt-get install linux-libc-dev
软件源更新:https://blog.csdn.net/weixin_60461563/article/details/121814421

再执行sudo apt-get upgrade

如果您需要使用linux/atomic.h头文件的定义,请尝试使用相应的用户态头文件进行开发,例如,以下是一个使用头文件进行原子操作的简单示例:

#include 
#include 
#include 

atomic_int counter = ATOMIC_VAR_INIT(0);

void* increment_counter(void* arg) {
    for (int i = 0; i < 1000; ++i) {
        atomic_fetch_add(&counter, 1);
    }
    return NULL;
}

int main() {
    pthread_t thread1, thread2;

    pthread_create(&thread1, NULL, increment_counter, NULL);
    pthread_create(&thread2, NULL, increment_counter, NULL);

    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);

    printf("Counter value: %d\n", atomic_load(&counter));

    return 0;
}

这个例子创建了两个线程,每个线程分别递增一个原子变量counter的值1000次。使用atomic_fetch_add函数来保证原子递增操作,而使用atomic_load函数来获取counter的当前值。

编译并运行上述代码,可以看到输出的Counter value的值为2000,即两个线程各自递增1000次:

wjr@WPF3N0KZ3:~/practice$ ./a.out 
Counter value: 2000

你可能感兴趣的:(linux,运维,服务器)