【问题标题】:stat method not found in libc.so.6在 libc.so.6 中找不到 stat 方法
【发布时间】:2021-07-27 10:06:32
【问题描述】:

我正在尝试使用 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 的宏,因此不再存在。
  2. stat 在另一个我无法检索的库中。

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

【问题讨论】:

  • 对于任何寻找的人,这里是库 - github.com/noojee/dart_posix。 stat 的实现目前在 nullsafety 分支中。

标签: dart posix dynamic-linking ffi stat


【解决方案1】:

我有两个理论:

没有必要理论化:你可以看看:

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

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

我想使用 stat 而不是 xstat

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

我需要这段代码也可以在 osx 上工作,据我所知它不支持 xstat。

您的代码可以检测它运行的平台并进行调整。这是使用 FFI 等不可移植机制的代价。

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 2018-03-16
    • 2019-08-10
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2023-01-17
    • 2023-02-23
    • 1970-01-01
    相关资源
    最近更新 更多