C语言 错误:modpost“memset_s”[xxx/xxx/xxx.ko]未定义

r6vfmomb  于 2023-08-03  发布在  其他
关注(0)|答案(2)|浏览(199)

我的Linux内核版本最近从4.18更改到5.14。当我编译一个ko时,我可能在Makefile中遇到了一些错误。它告诉我ERROR: modpost "memset_s" [xxx/xxx/xxx.ko] undefined!。如果我可以在源文件中添加EXPORT_SYMBOL(),我如何解决这个问题
如果我不能在源代码中添加EXPORT_SYMBOL(),我该如何解决这个问题

zqdjd7g9

zqdjd7g91#

出于大多数实际目的,memset_s()和其他_s“安全”功能仅由Microsoft在Windows上实现。因此,memset_s()几乎肯定不能在Linux内核中工作。(话虽如此,但有趣的是,它曾经奏效。
在微软之外实现这些功能有相当大的阻力。然而,C23增加了函数memset_explicit(),它应该保证内存被设置-编译器不应该优化它。例如,这对于清除内存中的密码很有价值。memset_s()的规范也需要此属性。
有关附录K函数的大量信息,请参见Do you use the TR-24731 'safe' functions?

50few1ms

50few1ms2#

memset_s和朋友可以通过safec library获得。请注意,在本页的中间部分有关于在Linux内核模块中使用此方法的特殊说明。

相关问题