4

我正在尝试使用修改后的 glibc 库。glibc 库静态链接到我的代码。my_libc_var我在 glibc 库中声明了一个新变量(让我们称之为)。但是,当我尝试在我的程序中包含该变量时(使用extern关键字 ofcourse),我得到了undefined reference错误。我怎么解决这个问题?

在 glibc 中,变量声明如下。

int my_libc_var;

而在我的程序中,它声明如下。

extern int my_libc_var;
4

1 回答 1

1

检查在编译过程中,您添加的变量是否包含在使用-fvisibility=hidden或等选项编译的源文件中-fvisibility=internal。这将使您的符号无法从其他模块引用。

只要您使用 gcc,就可以使用以下任一方法获得类似的行为:

#pragma GCC visibility push("hidden")

可以放在源文件的开头,或者:

int var __attribute__ ((visibility ("hidden")));

在符号的定义中(显然你没有放置,但我把它放在这里是为了完成我的答案)。

更多信息,您可以参考gcc 属性概览页面

于 2012-05-26T19:40:08.080 回答