- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 out-of-tree Linux 内核模块需要编译。当我在内核模块目录中执行“make”时,我得到:
“ fatal error :stdarg.h:没有那个文件或目录”
在开始构建之前,我根据我的 Linux 发行版安装了头文件。
$sudo apt-get install kernel-headers-$(uname -r)
如何解决这个编译错误? (我的发行版是带有 linux-headers-4.15.0-42-generic 的 Ubuntu 16.04)
最佳答案
我使用“locate”命令搜索了 stdarg.h 以查看我是否可以在系统上运行该文件。
我得到了:
/usr/include/c++/5/tr1/stdarg.h
/usr/lib/gcc/i686-linux-gnu/5/include/cross-stdarg.h
/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h
...
它告诉我编译器至少提供了一个 stdarg.h。
我试图在内核模块 Makefile 中包含路径“/usr/lib/gcc/i686-linux-gnu/5/include”,以便可以获取 stdarg.h。它没有工作(在构建时,官方内核头文件中对 stdarg.h 的另一个引用没有被解析)。
我终于在下面直接创建了一个符号链接(symbolic link):/usr/src/linux-headers-4.15.0-42-generic/include
$sudo ln -s/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h stdarg.h
这足以解决编译问题。
我想知道内核头文件是否应该默认带有 stdarg.h 的实现(这是我第一次遇到这个问题)。我还读到编译器提供了一种实现,大多数时候最好使用编译器版本。
更新说明:如果上述方案仍不能解决问题:
在再次运行 make 之前,执行 make clean。在文件夹中执行 ls -la
并查找“.cache.mk”文件。如果它仍然存在,请将其删除并再次运行“make”。它应该可以解决问题。
关于linux - stdarg.h No such file or directory while compiling out-of-tree Linux kernel module 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54480765/
在我的系统(Mac OS 10.6)上,/usr/include/stdarg.h是: /* This file is public domain. */ /* GCC uses its own c
我遇到了一个竞争性问题,要求输出以下内容(请忽略该问题的软件工程问题,如果有的话,因为这是一个学术示例,但是如果它与该问题相关,请详细说明): #include #include int ripp
void wczytaj(N nazwa, O x1, ...) { va_list arg; O x; ... va_start (arg, x1); for
我正在尝试使用 stdarg ( library) header 连接字符串,但我做错了。使用 realloc 连接字符串有更简单的方法吗? #include #include #include
我在 codegolf.stackexchange 网站上找到了这段代码。 #include #define function int #define var int struct { int (*
所以我一直在尝试将 stdarg 用于不确定的参数。对于 int,它工作得很好,但现在我正在尝试使用 char 指针。这是我的代码: void updateValue(char *parame
TL;DR:mprintf("%s and %s", arg1, arg2) 似乎打印 "arg1arg2 and arg2" 而不是 “arg1 和 arg2” 使用 stdarg.h 中定义的 v
有没有什么方法可以使用指针访问函数中的可变参数?我试着做类似的事情 void test(int p, ...) { int firstarg = *(&p - 1); } 但这不起作用。 va
我正在使用 clang 编译 C++。我使用 clang *.cc -o ray 调用 clang .但是,我收到此错误消息: -- mode: compilation; default-direct
在我的系统 (Mac OS 10.6) 上 /usr/include/stdarg.h 是: /* This file is public domain. */ /* GCC uses its ow
我正在试验可变参数列表并看到一些奇怪的结果... 我正在测试的代码是: #include #include void foo(int param1, int param2, ...) {
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我是 android ndk 的新手,我正在尝试制作一个完全原生的应用程序。我正在使用 Eclipse,我收到了这个警告: Unresolved inclusion: 以及我尝试在该 header
这似乎是 clang 中与空终止变量参数列表相关的错误。 预期的行为是 va_arg() 将在第一次迭代时返回 0,因为别名后面的参数是 0。 完整代码如下。在 main() 中,删除“void *m
我在我的项目中包含了 vsprintf。但是,当我编译它时,我收到以下错误。 /opt/xgcc/decstation-ultrix/bin/xgcc -DIN_USER_MODE -c -I../u
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图通过检查堆栈来理解和实现一种处理可变长度参数函数的方法,但我不知道从哪里开始以及如何开始。我发现以下链接很有用,但我仍然不太明白我如何能够在 c 中为打印功能之类的东西做这样的事情。 http:
我想要一个函数,当用不同数量的参数调用时,返回第一个非 NULL 参数。我试过这个,但它在 for 循环上进行了核心转储: char *first(char *args, ...) { va_
出于好奇,我希望为标准 C 库中的某些函数编写最少的替代品。至此,我已经完成了printf()、strlen()、strcpy()、memcpy()、 memset()等等...但是当我尝试使用pri
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Installing Python Imaging Library (PIL) on Snow Leopar
我是一名优秀的程序员,十分优秀!