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.
Поддерживаемые компиляторы
В настоящее время все версии компилятора ANSI/C от IBM "xlc", "xlc_r", "cc", "cc_r" или "vac" будут работать для построения Perl, если этот компилятор работает на вашей системе.
Если вы планируете связать Perl с модулем, который требует поддержки потоков, например, DBD::Oracle, лучше использовать версию компилятора _r. Это не создаст потоковый Perl, но Perl с поддержкой потоков. См. также раздел "Потоковый Perl" далее.
На момент написания (2010-09) только компилятор IBM XL C for AIX или IBM XL C/C++ for AIX поддерживается IBM на 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'). PTF для APAR IZ35785, решающий эту проблему, доступен от IBM (PTF от апреля 2009 года для XL C/C++ Enterprise Edition for AIX, V9.0).
Если вы выберите XL C/C++ V11, вам необходимо установить PTF от апреля 2010 года (или более поздний) иначе вы не получите работоспособной версии Perl.
Perl может быть скомпилирован как с компилятором ANSI C от IBM, так и с gcc. Рекомендуется использовать первый, так как он не только без проблем компилирует Perl, но и может использовать функции, описанные ниже, которые требуют использования флагов командной строки, специфичных для компилятора IBM.
Если вы решите использовать gcc, убедитесь, что ваша установка актуальна и полна, и обязательно ознакомьтесь с файлом INSTALL для Perl для получения более подробной информации, специфичной для 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 и более новые версии несовместимы с системным файловым набором perl.libext IBM.
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 C от 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. Пожалуйста, сообщите команде разработчиков о любых трудностях, с которыми вы столкнулись.
Уровень ОС
Перед установкой патчей для компилятора C от IBM необходимо знать уровень патчей для операционной системы. Команда 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.
Использование GNU gcc для сборки 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–2023 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.38.0/perlaix