如何在使用名称空间的外部库链接时解决C中未定义的引用?

时间:2014-08-06 06:17:37

标签: c linker

我将程序链接到外部静态库。

这是我看到的众多错误之一:

undefined reference to `tcp_outratectl_tmofactor'

这在外部库c文件中定义为:

int tcp_outratectl_tmofactor = 1;

这在我的程序中使用如下所示:

/* This is just a snippet */
extern int tcp_outratectl_timerticks;
if (count) {
    tcp_outratectl_timerticks = *count;
}

我从库中提取了目标文件,并试图寻找符号

$ nm -A ./*.o | grep tcp_outratectl_timerticks
./tcp_timer.o:0000000000000018 B rumpns_tcp_outratectl_timerticks
./tcp_usrreq.o:                 U rumpns_tcp_outratectl_timerticks

正如您所看到的,tcp_outratectl_tmofactor是一个全局BSS符号,但它后面有“rumpns_”前缀,这会导致链接器错误。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我正在使用的外部库在符号之后添加了“rumpns_”,这些符号还不是其命名空间的一部分。

修改makefile以删除此行为对我有用