AIX, G++, static objects initialization

Главная Форумы POWER Systems AIX/Hardware AIX, G++, static objects initialization

Просмотр 2 веток ответов
  • Автор
    Сообщения
    • #9075
      Юрий
      Участник

      Доброго времени суток!
      Переносим проект, успешно работающий и собирающийся в Linux, на AIX.
      Собрали, но при запуске приложения обнаружилась такая проблема: не инициализируются некоторые статические объекты. Увидели это при падении конструктора, который пытался обратиться к статическому полю своего же класса. При добавлении других статических переменных в этот же файл с исходным текстом результат тот же (т.е. они не инициализируются и программа сегфолтится при обращении к ним). Но если включить и определить статические переменные в одном из заголовочных файлов, подключаемых в этом исходнике, то они инициализируются.
      Опции компоновщика для библиотеки с “больным” конструктором (и всех остальных): -G,-bexpfull,-bsymbolic,-bbigtoc,-bnoentry.
      Опции компоновщика для исполняемого файла приложения: -brtl,-bsymbolic,-bbigtoc

      Написали тестовый пример с точно такими же опциями линкера – всё работает! Т.е. переменные инициализируются когда надо и там где надо.
      Какие могут быть предложения по поводу стороны, в которую нужно копать?

    • #9076
      andrewk
      Участник

      я не программист, но предложение сделаю 🙂 попробуйте взять IBM XL C/C++ Compiler вместо GCC. По моему небольшому опыту собирания разного линуксового барахла под AIX, он несколько лучше – меньше непонятных проблем с собранными приложениями, но, возможно, придется кое-где ручками подпилить код, чтобы приложение собиралось. бесплатный триал на 60 дней где-то здесь – https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-xlccpp111&S_CMP=rnav

    • #9077
      Юрий
      Участник

      Спасибо за подсказку! Попробуем взять IBMвский компилятор

Просмотр 2 веток ответов
  • Для ответа в этой теме необходимо авторизоваться.