Solaris共享库和全局变量

时间:2011-03-28 16:31:43

标签: c++ global-variables solaris shared-libraries

我在Solaris上的共享库中遇到了全局变量的问题。 请考虑以下示例:

class Foo
{
public:
 Foo() { Init(); }

private:
  void Init() { // do something }
};

我在共享库中有一些代码:

Foo g_Foo;

我注意到在Solaris上从不调用Foo构造函数,而相同的代码在Linux上工作。

我正在使用gcc 3.4.3和Sun链接器。

1 个答案:

答案 0 :(得分:1)

您是否使用-G标志创建共享对象?例如 CC -G -o mylib.so myfile.cpp

如果未指定-G,则编译器可能无法正确初始化全局变量。请参阅编译器文档here

注意,文档还说你不能使用ld,但需要用CC来做链接。