如何在Ubuntu 12.04中使用Boehm垃圾收集器

时间:2012-10-04 19:08:26

标签: ubuntu ubuntu-12.04 ubuntu-10.04 boehm-gc

考虑该计划:

#include <gc/gc.h>
int main() {
  void* p = GC_MALLOC(15);
}

在Ubuntu 10.04 LTS下编译(gcc -lgc test.c)。在12.04 LTS下:

/tmp/cc7GcTfU.o: In function `main':
main.c:(.text+0xe): undefined reference to `GC_malloc'
collect2: ld returned 1 exit status

看起来在10.04和12.04之间,他们已经改变了库,而不是在malloc替换中编译。或者这就是我认为libgc1c2包的描述:

[...] However, it does not work as a drop-in malloc(3) replacement.

有一种简单的方法来解决这个问题吗? (说,比手动重新编译libgc更简单......)

1 个答案:

答案 0 :(得分:1)

回答我自己的问题:实际上,Boehm GC库的工作方式与12.04中的相同。问题是海湾合作委员会没有! GCC已经开始默认为--as-needed,如果它位于该行的开头,它将完全删除-lgc。这是一个非常重大的变化!!

解决方案是将-lgc移至最后:

gcc test.c -lgc

或添加:

gcc -Wl,--as-needed -lgc test.c