Наш исходный код имеет множество автономных статических функций шаблона. Мне нужно скомпилировать его в системе AIX 7.1 Power 7 с нативным IBM xlc++
компилятор. С помощью static
Ключевое слово с автономными функциями является устаревшей практикой и не поддерживается xlc++
, так что для компиляции моей программы я удалил это ключевое слово из объявлений функций. После успешной компиляции произошел сбой при первом запуске Linux/g++
это абсолютно стабильно с теми же входными данными).
Я пытался отладить с dbx
Отладчик пожаловался на internal error
а также segmentation fault in extend_brk
, Квоты памяти не используются, так что это не недостаток памяти / дискового пространства. Система настроена на создание полного дампа ядра, программа скомпилирована с -g
вариант. Все библиотеки связаны статически, поэтому нет проблем с созданием исключений в общих библиотеках.
1) Можно ли компилировать статические функции шаблона на xlc++
без удаления static
ключевое слово, так что я могу быть уверен, что весь код такой же, как в системе RHEL?
2) Почему не работает отладчик?
Похоже, у меня была проблема переносимости 32/64 бит, удаление статический Ключевое слово безвредно в этой ситуации.
Проблема исчезла после того, как я добавил следующую строку в мой файл .kshrc:
export OBJECT_MODE=64
По умолчанию компиляторы IBM XL работают в 32-битном режиме, даже в 64-битных системах AIX 7.1. Чтобы перезаписать поведение по умолчанию, программист может установить переменную окружения или задать параметр -q64 для компилятора.
Других решений пока нет …