【发布时间】:2012-06-13 03:35:36
【问题描述】:
在 Windows 上,stat 和 Windows 提供的几乎所有其他 C/POSIX 函数都在 msvcrt.dll 中定义,这是 C 运行时库。
在 Linux 上,我知道很多 POSIX C 函数都是系统调用。我也知道在链接程序时,不能有未定义的引用。我在/lib 和/usr/lib 中搜索了所有so 文件中的符号stat 或“损坏/前缀”形式,但没有找到任何东西。这是我使用的命令:
objdump -T /lib/*.so* /usr/lib/*.so* | grep "stat"
它没有找到我正在寻找的stat。
所以我的问题变成了:它在哪里,以及定义的任何其他“系统调用”?
【问题讨论】:
-
@krynr 我认为他想要的是调用内核的存根代码。我的猜测是
.o文件逃脱了.so搜索,但我手边没有Linux。 -
@krynr 非常没有帮助。链接器需要链接一些包含定义或转发定义的库或可执行文件(在导入库的情况下)。
-
@rubenvb:你的意思是声明,那是不同的东西。一分钟。
-
@krynr 不,(非定义)声明是您在头文件中找到的。编译器不知道如何将它连接到内核。
-
@Potatoswatter:请看下面我的回答。
标签: c linux posix system-calls