Build 向glibc添加函数,以及如何将bind值更改为GLOBAL?
出于某些原因,我需要向glibc添加一个函数。我试图向pthread.so添加一个示例函数:Build 向glibc添加函数,以及如何将bind值更改为GLOBAL?,build,shared-libraries,glibc,Build,Shared Libraries,Glibc,出于某些原因,我需要向glibc添加一个函数。我试图向pthread.so添加一个示例函数: 添加一个文件glibc/nptl/my_add.c,该文件返回两个数字的总和 修改glibc/nptl/Makefile,将my_Add添加到“libpthread例程” 使glibc和我得到pthread.so,但是func的绑定值是本地的如何将绑定值从本地更改为全局? 我想也许我应该修改Makefile中的gcc标志,但我不知道怎么做。这个问题对我来说很复杂,但我必须解决它 请帮帮我,谢谢 我的_a
glibc/nptl/my_add.c
,该文件返回两个数字的总和glibc/nptl/Makefile
,将my_Add
添加到“libpthread例程”#include "pthreadP.h"
#include <shlib-compat.h>
int __my_add (int a, int b)
{
return a+b;
}
versioned_symbol (libpthread, __my_add, my_add, GLIBC_2_1);
#包括“pthreadP.h”
#包括
int u我的添加(int a,int b)
{
返回a+b;
}
版本化的\u符号(libpthread、\uuuuuMy\uAdd、myuAdd、GLIBC\u2\u1);
但是func的绑定值是本地的
这是因为GLIBC构建过程严格控制外部符号集(因此不会导出不需要的符号或仅导出内部符号)
您必须将
my\u add
函数添加到nptl/Versions
文件中。非常感谢!它解决了我的问题problem@noobcjl如果一个答案对你有帮助,你应该投它一票。如果它解决了你的问题,你应该接受答案。
#include "pthreadP.h"
#include <shlib-compat.h>
int __my_add (int a, int b)
{
return a+b;
}
versioned_symbol (libpthread, __my_add, my_add, GLIBC_2_1);