在 libc.so.6 中找不到统计方法

stat method not found in libc.so.6

使用 Dart FFI 我正在尝试动态加载 linux/posix 'stat' 函数。

我假设该函数在 libc.so.6 库中,但是当我尝试加载它时出现错误:

Invalid argument(s): Failed to lookup symbol (/lib/x86_64-linux-gnu/libc.so.6: undefined symbol: stat)

我成功地从 libc.so.6 库中加载了其他函数,因此我的动态加载技术工作正常。

我有两种说法:

  1. stat 是 xstat 的宏,因此 stat 不再存在。
  2. stat 在另一个我无法获取的库中。

理想情况下,我想使用 stat 而不是 xstat,因为我需要此代码也能在 osx 上工作,据我所知,它不支持 xstat。 帮忙?

I have two theories:

不需要理论化:你可以看看:

echo "#include <sys/stat.h>" | gcc -xc - -E -dD | less
nm -AD /lib/x86_64-linux/gnu/*.so* | grep ' stat$'

会告诉你你需要知道的一切(你的第一个理论是正确的)。

I want to use stat rather than xstat

你不能:它不存在(使用 GLIBC 时)。

I need this code to also work on osx which as far as I can tell doesn't support xstat.

您的代码可以检测它 运行 所在的平台并进行调整。这是使用非便携机制的代价,比如FFI。