linux - 是否可以从库中获取函数的签名?

标签 linux shared-libraries ld nm

假设 nm 在库 utils 中报告了一个函数符号:

$ nm --defined-only utils.so
T function_symbol

是否可以确定该函数的签名(返回类型和参数)?或者至少是参数的数量和每个参数的大小?

最佳答案

可以从 DWARF 调试信息中获取此信息。但是,如果调试信息不​​可用(因为它已被删除或最初不是在编译期间生成的),则这是不可能的。 ELF 对象不包含此信息。

对于 C++ 函数符号,重整显示了函数参数的类型,但即使如此,函数结果的类型也丢失了,因此图片仍然不完整。

关于linux - 是否可以从库中获取函数的签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053491/

相关文章:

linux - 如何在 Linux 中使用 curl 或任何 shell 脚本或任何命令行实用程序将整个目录上传到 artifactory?

c - 服务器不接受来自客户端的连接以从文件读取数据

android - UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64,/system/lib64

Linux:弱链接整个库,如 OS X ld -weak-lfoo

c - 静态链接 libpng 到共享库

c - gentoo ld.gold 在 sys-libs/db 上失败

linux - 在 Linux 上构建 Microsoft Bond

linux - Docker Compose - 删除悬挂服务

linux - 如何使用 sudo yum install 安装 Fortran -dev 包

c++ - 如何避免链接不必要的共享库?