我正在尝试使用修改过的glibc库。 glibc库静态链接到我的代码。我已经在glibc库中声明了一个新变量(让我们称之为my_libc_var
)。但是,当我尝试在我的程序中包含该变量时(使用extern
关键字ofcourse),我得到undefined reference
错误。我该如何解决这个问题?
在glibc中,变量声明如下。
int my_libc_var;
然而,在我的程序中,它声明如下。
extern int my_libc_var;
答案 0 :(得分:1)
检查编译过程中您添加的变量是否包含在使用-fvisibility=hidden
或-fvisibility=internal
等选项编译的源文件中。这将使您的符号不能从其他模块引用。
只要您使用gcc,就可以使用以下任一方式获得类似的行为:
#pragma GCC visibility push("hidden")
可以放在源文件的开头,或者:
int var __attribute__ ((visibility ("hidden")));
在符号的定义中(显然你没有放置,但我把它放在这里以完成我的回答)。
有关详细信息,请参阅gcc attribute overview page。