0

我要调用的 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**

这就是原因吗,因为当我func1()从我的应用程序调用它时它返回一个errno =38,即:ENOSYS 38 /* Function not implemented */

我可以以某种方式将func1()绑定设为 GLOBAL,然后从我的应用程序中调用它吗?

4

1 回答 1

0

这是不是这个原因

不,符号绑定就是能够调用函数(您可以调用GLOBAL,但不能调用LOCAL函数)并能够覆盖定义(您可以将多个已WEAK定义的函数链接到单个可执行文件中,而不会出现多重定义的链接器错误)。

一旦你可以调用该函数,它的绑定就超出了想象,它会返回它返回的任何内容。

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

于 2013-01-29T15:33:10.880 回答