Общие библиотеки Solaris и глобальные переменные - PullRequest
0 голосов
/ 28 марта 2011

У меня проблема с глобальными переменными в разделяемой библиотеке в Solaris. Рассмотрим следующий образец:

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

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

У меня есть код в общей библиотеке:

Foo g_Foo;

Я заметил, что конструктор Foo никогда не вызывается в Solaris, в то время как тот же код работает в Linux.

Я использую gcc 3.4.3 и компоновщик Sun.

1 Ответ

1 голос
/ 03 мая 2011

Вы создаете общий объект с флагом -G?например, CC -G -o mylib.so myfile.cpp

Если вы не укажете -G, компилятор может неправильно инициализировать глобальные переменные.См. Документацию по компилятору здесь .

Обратите внимание, в документах также сказано, что вы не можете использовать ld, но для связи необходимо использовать CC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...