Linux 是否可以获取函数';图书馆的签名?

Linux 是否可以获取函数';图书馆的签名?,linux,shared-libraries,ld,nm,Linux,Shared Libraries,Ld,Nm,假设nm在库UTIL中报告一个函数符号: $ nm --defined-only utils.so T function_symbol 是否可以确定该函数的签名(返回类型和参数)?或者至少是参数的数量和每个参数的大小?可以从DWARF调试信息中获取此信息。但是,如果调试信息不可用(可能是因为它已被剥离,也可能是在编译过程中没有生成的),则这是不可能的。ELF对象不包含此信息 对于C++函数符号,字符显示了函数参数的类型,但即使在那里,函数结果的类型也不见了,所以图片仍然不完整。即使参数的数量不

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

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

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

可以从DWARF调试信息中获取此信息。但是,如果调试信息不可用(可能是因为它已被剥离,也可能是在编译过程中没有生成的),则这是不可能的。ELF对象不包含此信息


对于C++函数符号,字符显示了函数参数的类型,但即使在那里,函数结果的类型也不见了,所以图片仍然不完整。即使参数的数量不可用?是的,参数的数量也不可用。顺便问一下,链接器如何确定库是否解析未定义的符号?链接器是否在不知道其类型的情况下匹配未定义符号和已定义符号?是的,没有函数符号的类型检查。(对于C++,当然有名称的限制,但这不是链接器需要知道的东西。)