C ++中究竟是什么'__dso_handle'

时间:2014-06-25 06:54:53

标签: c++ gcc

构建C ++程序时遇到以下错误:

hidden symbol `__dso_handle' in /path-to/crtbegin.o is referenced by DSO

(其中/ path-to是crtbegin.o的完整路径)

我确保在构建源cpp文件和构建程序使用的.so库时指定了“-shared -fPIC”。但仍然有同样的错误。

我使用“nm”和“readelf”检查库,我确实看到我构建的每个库都引用了__dso_handle。例如:

86: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __dso_handle

我有两个问题:

1)。究竟是什么导致库(在C ++中)包含对'_dso_handle'的引用? “-std = c ++ 0x”会导致这种情况吗?或者,'-nartartfiles'会导致这种情况吗?编译器是:i686-wrs-linux-gnu-g ++ v4.6.3。

2)由于crtbegin.o定义了'__dso_handle',为什么这个问题呢?这只是因为它是“隐藏的符号”吗?没有人应该参考隐藏的符号?

感谢。

更新:已解决。见评论#3。

0 个答案:

没有答案