应用程序返回ENOSYS 38功能未实现

时间:2013-01-29 13:54:05

标签: glibc elf

我想调用的func1()具有如下绑定:

readelf -Ws /lib/libc.so.6 | grep  func1

    592: 000d8910    40 FUNC    WEAK   DEFAULT   12 func1@@GLIBC_2.13
   1690: 000d8910    40 FUNC    WEAK   DEFAULT   12 func2@@GLIBC_2.13**

这是原因,因为当我从我的应用程序调用{​​{1}}时,它会返回func1(),即:errno =38

我可以以某种方式将ENOSYS 38 /* Function not implemented */绑定为GLOBAL,然后从我的应用程序中调用它吗?

1 个答案:

答案 0 :(得分:0)

  

这是原因

没有。符号绑定完全是为了能够调用该函数(您可以调用GLOBAL,而不是LOCAL函数)并且能够覆盖定义(您可以链接多个WEAK定义的函数到没有多重定义的链接器错误的单个可执行文件中。)

一旦你可以调用该函数,它的绑定就不在图片中了,它会返回它返回的内容。

你得到ENOSYS的原因很可能是你的内核太旧了。