AIX, G++, static objects initialization

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

В этой теме 2 ответа, 2 участника, последнее обновление  Юрий 8 года/лет, 11 мес. назад.

  • Автор
    Сообщения
  • #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вский компилятор

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