perlaix
СОДЕРЖАНИЕ
- НАЗВАНИЕ
- ОПИСАНИЕ
- Компиляция Perl 5 на AIX
- Поддерживаемые компиляторы
- Несовместимость с AIX Toolbox lib gdbm
- Perl 5 был успешно скомпилирован и протестирован на:
- Создание динамических расширений на AIX
- Использование больших файлов с Perl
- Потоковый Perl
- 64-битный Perl
- Длинная арифметика с плавающей точкой
- Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (потоковый/32-битный)
- Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (32-битный)
- Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (потоковый/64-битный)
- Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (64-битный)
- Компиляция Perl 5 на AIX 7.1.0
- Компиляция Perl 5 на более старых версиях AIX до 4.3.3
- Уровень операционной системы
- Создание динамических расширений на AIX < 5L
- Компилятор IBM ANSI C
- Опция usenm
- Использование gcc GNU для компиляции Perl
- Использование больших файлов с Perl < 5L
- Потоковый Perl < 5L
- 64-битный Perl < 5L
- AIX 4.2 и расширения, использующие C++ со статическими переменными
- АВТОРЫ
НАЗВАНИЕ
perlaix - Perl версия 5 на системах IBM AIX (UNIX)
ОПИСАНИЕ
Этот документ описывает различные особенности операционной системы IBM UNIX AIX, которые повлияют на то, как будет компилироваться и/или работать Perl версии 5 (далее просто Perl).
Компиляция Perl 5 на AIX
Для получения информации о компиляторах на более старых версиях AIX см. "Компиляция Perl 5 на более старых версиях AIX до 4.3.3".
При компиляции Perl необходимо использовать компилятор ANSI C. AIX по умолчанию не поставляется с ANSI-совместимым компилятором C, но двоичные сборки gcc для AIX широко доступны. Версия gcc также включена в AIX Toolbox, который поставляется с AIX.
Поддерживаемые компиляторы
В настоящее время все версии компиляторов IBM "xlc", "xlc_r", "cc", "cc_r" или "vac" ANSI/C будут работать для построения Perl, если этот компилятор работает на вашей системе.
Если вы планируете связать Perl с модулем, который требует поддержки потоков, например, DBD::Oracle, лучше использовать версию компилятора _r. Это не создаст потоковый Perl, но Perl, поддерживающий потоки. См. также "Потоковый Perl" ниже.
По состоянию на 2010-09 гг. IBM поддерживает только компилятор IBM XL C for AIX или IBM XL C/C++ for AIX на AIX 5L/6.1/7.1.
Следующие версии компиляторов в настоящее время поддерживаются IBM:
IBM XL C and IBM XL C/C++ V8, V9, V10, V11 Компилятор XL C for AIX интегрирован в компилятор XL C/C++ for AIX и, следовательно, также поддерживается.
Если вы выберете XL C/C++ V9, вам необходимо установить APAR IZ35785, в противном случае интегрированный SDBM_File не будет компилироваться должным образом из-за ошибки оптимизации. Вы можете обойти эту проблему, добавив -qipa к флагам оптимизации (-Doptimize='-O -qipa'). Пакет исправлений для APAR IZ35785, решающий эту проблему, доступен от IBM (апрельский 2009 пакет исправлений для XL C/C++ Enterprise Edition for AIX, версия 9.0).
Если вы выберете XL C/C++ V11, вам потребуется апрельский 2010 пакет исправлений (или более поздняя версия), в противном случае вы не получите работоспособной версии Perl.
Perl можно скомпилировать с использованием компилятора IBM ANSI C или gcc. Рекомендуется использовать первый, так как он не только может скомпилировать Perl без проблем, но и может воспользоваться преимуществами функций, перечисленных ниже, которые требуют использования флагов командной строки, специфичных для компилятора IBM.
Если вы решите использовать gcc, убедитесь, что ваша установка актуальна и полна, и обязательно прочтите файл Perl INSTALL для получения более подробной информации, специфичной для gcc. Пожалуйста, сообщите команде разработчиков о любых сложностях.
Несовместимость с AIX Toolbox lib gdbm
Если на вашей системе установлена версия lib gdbm из AIX Toolbox < 1.8.3-5, Perl не будет работать. Эта библиотека содержит заголовочные файлы /opt/freeware/include/gdbm/dbm.h|ndbm.h, которые конфликтуют с системными версиями AIX. Библиотека lib gdbm будет автоматически удалена из необходимых библиотек, если будет обнаружено присутствие одного из этих двух заголовочных файлов. Если вы хотите скомпилировать Perl с поддержкой GDBM, установите не менее gdbm-devel-1.8.3-5 (или выше).
Perl 5 был успешно скомпилирован и протестирован на:
Perl | AIX Level | Compiler Level | w th | w/o th
-------+---------------------+-------------------------+------+-------
5.12.2 |5.1 TL9 32 bit | XL C/C++ V7 | OK | OK
5.12.2 |5.1 TL9 64 bit | XL C/C++ V7 | OK | OK
5.12.2 |5.2 TL10 SP8 32 bit | XL C/C++ V8 | OK | OK
5.12.2 |5.2 TL10 SP8 32 bit | gcc 3.2.2 | OK | OK
5.12.2 |5.2 TL10 SP8 64 bit | XL C/C++ V8 | OK | OK
5.12.2 |5.3 TL8 SP8 32 bit | XL C/C++ V9 + IZ35785 | OK | OK
5.12.2 |5.3 TL8 SP8 32 bit | gcc 4.2.4 | OK | OK
5.12.2 |5.3 TL8 SP8 64 bit | XL C/C++ V9 + IZ35785 | OK | OK
5.12.2 |5.3 TL10 SP3 32 bit | XL C/C++ V11 + Apr 2010 | OK | OK
5.12.2 |5.3 TL10 SP3 64 bit | XL C/C++ V11 + Apr 2010 | OK | OK
5.12.2 |6.1 TL1 SP7 32 bit | XL C/C++ V10 | OK | OK
5.12.2 |6.1 TL1 SP7 64 bit | XL C/C++ V10 | OK | OK
5.13 |7.1 TL0 SP1 32 bit | XL C/C++ V11 + Jul 2010 | OK | OK
5.13 |7.1 TL0 SP1 64 bit | XL C/C++ V11 + Jul 2010 | OK | OK
w th = with thread support
w/o th = without thread support
OK = tested Успешный тест означает, что все запуски "make test" завершаются с результатом 100% OK. Все тесты проводились с установленным -Duseshrplib.
Все тесты проводились на старейшем поддерживаемом уровне технологии AIX с применением последнего пакета поддержки. Если тестируемая версия AIX не поддерживается (AIX 4.3.3, 5.1, 5.2), использовался последний доступный уровень поддержки.
Создание динамических расширений на AIX
Начиная с Perl 5.7.2 (и, следовательно, 5.8.x / 5.10.x / 5.12.x) и AIX 4.3 или новее Perl использует собственный динамический интерфейс загрузки AIX в так называемом режиме динамической компоновки вместо эмулированного интерфейса, который использовался в выпусках Perl 5.6.1 и более ранних или, для выпусков AIX 4.2 и более ранних. Это изменение нарушает обратную совместимость с скомпилированными модулями из более ранних выпусков Perl. Изменение было внесено для повышения совместимости Perl с другими приложениями, такими как Apache/mod_perl, которые используют собственный интерфейс AIX. Это изменение также позволяет использовать код C++ со статическими конструкторами и деструкторами в расширениях Perl, что не было возможно с использованием эмулированного интерфейса.
Настоятельно рекомендуется использовать новый интерфейс.
Использование больших файлов с Perl
Не должно вызывать проблем.
Потоковый Perl
Не должно вызывать проблем с AIX 5.1 / 5.2 / 5.3 / 6.1 / 7.1.
IBM использует системный Perl AIX (V5.6.0 на AIX 5.1 и V5.8.2 на AIX 5.2 / 5.3 и 6.1; V5.8.8 на AIX 5.3 TL11 и AIX 6.1 TL4; V5.10.1 на AIX 7.1) для некоторых системных скриптов AIX. Если вы измените ссылки в /usr/bin с системного Perl AIX (/usr/opt/perl5) на только что скомпилированный Perl, то вы получите те же возможности, что и с системным Perl IBM AIX, если будут использоваться потоковые параметры.
Потоковая сборка Perl работает также на AIX 5.1, но сборка IBM Perl (Perl v5.6.0) не потоковая на AIX 5.1.
Perl 5.12 и более новые версии несовместимы с файловым набором IBM perl.libext.
64-битный Perl
Если ваша система AIX установлена с поддержкой 64-битных вычислений, вы можете ожидать, что 64-битные конфигурации будут работать. Если вы хотите использовать 64-битный Perl на AIX 6.1, вам нужен APAR для исправления ошибки в libc.a, которая затрагивает функции (n)dbm_XXX. Номер APAR для этой проблемы - IZ39077.
Если вам требуется больше памяти (больший сегмент данных) для ваших программ Perl, вы можете установить:
/etc/security/limits
default: (or your user)
data = -1 (default is 262144 * 512 byte) При настройке по умолчанию размер ограничен 128 МБ. Значение -1 снимает это ограничение. Если "make test" завершится ошибкой, измените /etc/security/limits, как указано выше.
Длинная арифметика с плавающей точкой
IBM называет свою реализацию длинной арифметики с плавающей точкой 128-битной, но это не IEEE 128-битная ("четверная точность"), которая давала бы 116 бит мантиссы (и не реализована в аппаратном обеспечении), а специальная программная реализация, называемая "double-double", которая дает 106 бит мантиссы.
Похоже, в этой реализации длинной арифметики с плавающей точкой возникают различные проблемы. Если Configure обнаруживает эту неисправность, поддержка длинной арифметики с плавающей точкой будет отключена. Это можно переопределить с помощью явного -Duselongdouble (или -Dusemorebits, что включает как длинную арифметику с плавающей точкой, так и 64-битные целые числа). Если вы решите включить длинную арифметику с плавающей точкой, большинство из сломанных вещей в Perl имеют обходные пути, но обработка специальных значений бесконечность и NaN остается плохо реализованной: например, бесконечность плюс ноль приводит к NaN.
Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (потоковый/32-битный)
С помощью следующих параметров вы получите потоковую версию Perl, которая проходит все тесты make в потоковом 32-битном режиме, что является конфигурацией по умолчанию для сборок Perl, поставляемых с AIX.
rm config.sh
./Configure \
-d \
-Dcc=cc_r \
-Duseshrplib \
-Dusethreads \
-Dprefix=/usr/opt/perl5_32 Опция -Dprefix установит Perl в каталог, параллельный установке системного Perl IBM AIX.
Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (32-битный)
С помощью следующих параметров вы получите версию Perl, которая проходит все тесты make в 32-битном режиме.
rm config.sh
./Configure \
-d \
-Dcc=cc_r \
-Duseshrplib \
-Dprefix=/usr/opt/perl5_32 Опция -Dprefix установит Perl в каталог, параллельный установке системного Perl IBM AIX.
Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (потоковый/64-битный)
С помощью следующих параметров вы получите потоковую версию Perl, которая проходит все тесты make в 64-битном режиме.
export OBJECT_MODE=64 / setenv OBJECT_MODE 64 (depending on your shell)
rm config.sh
./Configure \
-d \
-Dcc=cc_r \
-Duseshrplib \
-Dusethreads \
-Duse64bitall \
-Dprefix=/usr/opt/perl5_64 Рекомендуемые параметры AIX 5.1/5.2/5.3/6.1 и 7.1 (64-битный)
С помощью следующих параметров вы получите версию Perl, которая проходит все тесты make в 64-битном режиме.
export OBJECT_MODE=64 / setenv OBJECT_MODE 64 (depending on your shell)
rm config.sh
./Configure \
-d \
-Dcc=cc_r \
-Duseshrplib \
-Duse64bitall \
-Dprefix=/usr/opt/perl5_64 Опция -Dprefix установит Perl в каталог, параллельный установке системного Perl IBM AIX.
Если вы выберете gcc для компиляции 64-битного Perl, вам нужно добавить следующую опцию:
-Dcc='gcc -maix64' Компиляция Perl 5 на AIX 7.1.0
Регрессия в AIX 7 вызывает сбой в make test в Time::Piece во время летнего времени. Исправление предоставляет APAR IV16514. Быстрый тест для проверки необходимости исправления, предполагая, что в настоящее время действует летнее время в восточном часовом поясе, заключался бы в выполнении TZ=EST5 date +%Z . Это вернёт EST в обычном случае, но ничего — если у вас есть проблема.
Компиляция Perl 5 на старых версиях AIX до 4.3.3
Поскольку AIX 4.3.3 прекратил поддержку 31 декабря 2003 года, эта информация предоставляется как есть. Версии Perl до Perl 5.8.9 можно было скомпилировать на AIX до 4.3.3 с использованием следующих настроек (результаты могут отличаться):
При компиляции Perl необходимо использовать компилятор ANSI C. AIX по умолчанию не поставляется с ANSI-совместимым компилятором C, но двоичные сборки gcc для AIX широко доступны.
На момент написания AIX поддерживает два разных собственных компилятора C, за которые нужно платить: xlC и vac. Если вы решите использовать один из этих двух (что намного проще, чем использовать gcc), обязательно обновите его до последней доступной версии исправления. В настоящее время:
xlC.C 3.1.4.10 or 3.6.6.0 or 4.0.2.2 or 5.0.2.9 or 6.0.0.3
vac.C 4.4.0.3 or 5.0.2.6 or 6.0.0.1 обратите внимание, что xlC имеет версию ОС в имени с версии 4.0.2.0, поэтому вы найдёте xlC.C для AIX-5.0 в качестве пакета
xlC.aix50.rte 5.0.2.0 or 6.0.0.3 подразуровни не являются одинаково последними для всех версий ОС. Например, последняя версия xlC-5 на aix41 — 5.0.2.9, а на aix43 — 5.0.2.7.
Perl можно скомпилировать с помощью ANSI-компилятора IBM или с помощью gcc. Первый вариант рекомендуется, так как он не только может скомпилировать Perl без проблем, но также может использовать функции, перечисленные позже, которые требуют использования флагов командной строки, специфичных для компилятора IBM.
Уровни исправления компилятора IBM 5.0.0.0 и 5.0.1.0 имеют ошибки оптимизации компилятора, которые влияют на компиляцию perl.c и regcomp.c соответственно. Если конфигурация Perl обнаружит эти уровни исправления компилятора, оптимизация отключается для указанных файлов исходного кода. Рекомендуется обновить до версии не ниже 5.0.2.0.
Если вы решите использовать gcc, убедитесь, что ваша установка актуальна и полна, и обязательно прочитайте файл INSTALL для Perl, чтобы узнать больше о специфике использования gcc. Пожалуйста, сообщите команде разработчиков о любых трудностях, с которыми вам пришлось столкнуться.
Уровень ОС
Прежде чем установить исправления для компилятора IBM C, вам нужно знать уровень исправления операционной системы. Команда IBM «oslevel» покажет базовый уровень, но не всегда полностью (в этом примере oslevel показывает 4.3.NULL, в то время как система может работать в основном с 4.3.THREE):
# oslevel
4.3.0.0
# lslpp -l | grep 'bos.rte '
bos.rte 4.3.3.75 COMMITTED Base Operating System Runtime
bos.rte 4.3.2.0 COMMITTED Base Operating System Runtime
# То же самое может произойти с AIX 5.1 или другими уровнями ОС. Отметим, что Perl нельзя создать без установки bos.adt.syscalls и bos.adt.libm
# lslpp -l | egrep "syscalls|libm"
bos.adt.libm 5.1.0.25 COMMITTED Base Application Development
bos.adt.syscalls 5.1.0.36 COMMITTED System Calls Application
# Создание динамических расширений на AIX < 5L
AIX поддерживает динамически загружаемые объекты и общие библиотеки. Общие библиотеки по соглашению оканчиваются суффиксом .a, что несколько вводит в заблуждение, так как архив может содержать как статические, так и динамические члены. Для динамически загружаемых объектов Perl мы используем суффикс .so, также используемый во многих других платформах.
Обратите внимание, что начиная с Perl 5.7.2 (и, следовательно, 5.8.0) и AIX 4.3 или новее Perl использует собственный интерфейс динамической загрузки AIX в режиме связывания во время выполнения, а не эмулированный интерфейс, который использовался в выпусках Perl 5.6.1 и более ранних или, для выпусков AIX 4.2 и более ранних. Это изменение нарушает обратную совместимость с скомпилированными модулями из более ранних выпусков Perl. Изменение было внесено для повышения совместимости Perl с другими приложениями, такими как Apache/mod_perl, которые используют собственный интерфейс AIX. Это изменение также позволяет использовать код C++ со статическими конструкторами и деструкторами в расширениях Perl, что не было возможно при использовании эмулированного интерфейса.
Компилятор ANSI C от IBM
Можно использовать все значения параметров по умолчанию для Configure.
Если вы выбрали использование vac 4, убедитесь, что вы используете 4.4.0.3. Более старые версии могут вызвать проблемы позже. Для vac 5 используйте не менее 5.0.1.0, но vac 5.0.2.6 или выше рекомендуется. Обратите внимание, что поскольку IBM удалила vac 5.0.2.1–5.0.2.5 из хранилища программного обеспечения, эти версии следует считать устаревшими.
Вот краткое руководство по обновлению компилятора до последней версии. Конечно, это может быть изменено. Вы можете обновляться только до версий из доступных обновлений ftp, если первые три группы цифр совпадают (при этом можно пропустить промежуточные, в отличие от исправлений в предварительных версиях Perl), или до версии выше, где «базовая» версия доступна. Другими словами, исправления компилятора AIX являются накопительными.
vac.C.4.4.0.1 => vac.C.4.4.0.3 is OK (vac.C.4.4.0.2 not needed)
xlC.C.3.1.3.3 => xlC.C.3.1.4.10 is NOT OK (xlC.C.3.1.4.0 is not
available)
# ftp ftp.software.ibm.com
Connected to service.boulder.ibm.com.
: welcome message ...
Name (ftp.software.ibm.com:merijn): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
... accepted login stuff
ftp> cd /aix/fixes/v4/
ftp> dir other other.ll
output to local-file: other.ll? y
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
ftp> dir xlc xlc.ll
output to local-file: xlc.ll? y
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
ftp> bye
... goodbye messages
# ls -l *.ll
-rw-rw-rw- 1 merijn system 1169432 Nov 2 17:29 other.ll
-rw-rw-rw- 1 merijn system 29170 Nov 2 17:29 xlc.ll На AIX 4.2 с использованием xlC продолжаем:
# lslpp -l | fgrep 'xlC.C '
xlC.C 3.1.4.9 COMMITTED C for AIX Compiler
xlC.C 3.1.4.0 COMMITTED C for AIX Compiler
# grep 'xlC.C.3.1.4.*.bff' xlc.ll
-rw-r--r-- 1 45776101 1 6286336 Jul 22 1996 xlC.C.3.1.4.1.bff
-rw-rw-r-- 1 45776101 1 6173696 Aug 24 1998 xlC.C.3.1.4.10.bff
-rw-r--r-- 1 45776101 1 6319104 Aug 14 1996 xlC.C.3.1.4.2.bff
-rw-r--r-- 1 45776101 1 6316032 Oct 21 1996 xlC.C.3.1.4.3.bff
-rw-r--r-- 1 45776101 1 6315008 Dec 20 1996 xlC.C.3.1.4.4.bff
-rw-rw-r-- 1 45776101 1 6178816 Mar 28 1997 xlC.C.3.1.4.5.bff
-rw-rw-r-- 1 45776101 1 6188032 May 22 1997 xlC.C.3.1.4.6.bff
-rw-rw-r-- 1 45776101 1 6191104 Sep 5 1997 xlC.C.3.1.4.7.bff
-rw-rw-r-- 1 45776101 1 6185984 Jan 13 1998 xlC.C.3.1.4.8.bff
-rw-rw-r-- 1 45776101 1 6169600 May 27 1998 xlC.C.3.1.4.9.bff
# wget ftp://ftp.software.ibm.com/aix/fixes/v4/xlc/xlC.C.3.1.4.10.bff
# На AIX 4.3 с использованием vac продолжаем:
# lslpp -l | grep 'vac.C '
vac.C 5.0.2.2 COMMITTED C for AIX Compiler
vac.C 5.0.2.0 COMMITTED C for AIX Compiler
# grep 'vac.C.5.0.2.*.bff' other.ll
-rw-rw-r-- 1 45776101 1 13592576 Apr 16 2001 vac.C.5.0.2.0.bff
-rw-rw-r-- 1 45776101 1 14133248 Apr 9 2002 vac.C.5.0.2.3.bff
-rw-rw-r-- 1 45776101 1 14173184 May 20 2002 vac.C.5.0.2.4.bff
-rw-rw-r-- 1 45776101 1 14192640 Nov 22 2002 vac.C.5.0.2.6.bff
# wget ftp://ftp.software.ibm.com/aix/fixes/v4/other/vac.C.5.0.2.6.bff
# Аналогично на всех остальных уровнях ОС. Затем выполните следующую команду и заполните ее параметры
# smit install_update
-> Install and Update from LATEST Available Software
* INPUT device / directory for software [ vac.C.5.0.2.6.bff ]
[ OK ]
[ OK ] Следуйте сообщениям… и всё готово.
Если вам нужен более веб-ориентированный подход, хорошей отправной точкой может служить http://www14.software.ibm.com/webapp/download/downloadaz.jsp, нажмите «C for AIX» и следуйте инструкциям.
Параметр usenm
При связывании miniperl
cc -o miniperl ... miniperlmain.o opmini.o perl.o ... -lm -lc ... вызывает ошибку такого типа
ld: 0711-317 ERROR: Undefined symbol: .aintl
ld: 0711-317 ERROR: Undefined symbol: .copysignl
ld: 0711-317 ERROR: Undefined symbol: .syscall
ld: 0711-317 ERROR: Undefined symbol: .eaccess
ld: 0711-317 ERROR: Undefined symbol: .setresuid
ld: 0711-317 ERROR: Undefined symbol: .setresgid
ld: 0711-317 ERROR: Undefined symbol: .setproctitle
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information. можно повторить с
make realclean
rm config.sh
./Configure -Dusenm ... что заставляет Configure использовать инструмент nm, при сканировании символов библиотеки, что обычно не делается в AIX.
В связи с этим, вы, вероятно, не должны использовать параметр -r Configure в AIX, поскольку это влияет на то, как используется инструмент nm.
Использование gcc от GNU для компиляции Perl
Использование gcc-3.x (тестировалось с 3.0.4, 3.1 и 3.2) теперь работает «из коробки», как и недавние сборки gcc-2.9, доступные непосредственно от IBM в составе пакетов совместимости с Linux, доступных здесь:
http://www.ibm.com/servers/aix/products/aixos/linux/ Использование больших файлов с Perl < 5L
Не должно вызывать проблем.
Потоковый Perl < 5L
Потоки, похоже, работают нормально, хотя в настоящее время не все тесты проходят при использовании потоков в сочетании с 64-разрядными конфигурациями.
При построении с потоками вы можете получить предупреждение:
"pp_sys.c", line 4640.39: 1506-280 (W) Function argument assignment
between types "unsigned char*" and "const void*" is not allowed. Точная строка может отличаться, но если предупреждение (W) исходит из строки, подобной этой
hent = PerlSock_gethostbyaddr(addr, (Netdb_hlen_t) addrlen, addrtype); в функции «pp_ghostent», вы можете его безопасно проигнорировать. Предупреждение вызвано тем, что у реентерабельной версии gethostbyaddr() немного другой прототип, чем у нереентерабельной версии, но разница здесь не очень значительна.
64-разрядный Perl < 5L
Если ваша система AIX установлена с поддержкой 64-разрядной архитектуры, можно ожидать, что 64-разрядные конфигурации будут работать. В сочетании с потоками некоторые тесты могут по-прежнему проваливаться.
AIX 4.2 и расширения, использующие C++ со статическими переменными
В AIX 4.2 расширения Perl, использующие функции C++, в которых используются статические переменные, могут иметь проблемы с тем, что статические переменные не инициализируются. В более новых выпусках AIX эта проблема была решена путем связывания Perl с библиотекой libC_r, но, к сожалению, в AIX 4.2 в этой библиотеке есть скрытая ошибка, из-за которой различные функции, связанные со временем (например, time() и gettimeofday()), возвращают поврежденные значения, и поэтому в AIX 4.2 Perl не связан с libC_r.
АВТОРЫ
Rainer Tammer <tammer@tammer.net>
© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.34.0/perlaix