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