Spec-Zone.ru › Perl 5.28

perlaix

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • ОПИСАНИЕ
    • Компиляция Perl 5 под AIX
    • Поддерживаемые компиляторы
    • Несовместимость с AIX Toolbox lib gdbm
    • Perl 5 успешно скомпилирован и протестирован на:
    • Компиляция динамических расширений под AIX
    • Использование больших файлов с Perl
    • Потоковый Perl
    • 64-битный Perl
    • Длинные типы double
    • Рекомендуемые параметры 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
    • Использование GNU gcc для компиляции 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'). Пакет исправления для APAR IZ35785, который решает эту проблему, доступен от IBM (апрель 2009 года PTF для XL C/C++ Enterprise Edition для AIX, V9.0).

Если вы выбираете XL C/C++ V11, вам необходимо установить PTF от апреля 2010 года (или более поздний), иначе вы не получите работоспособную версию Perl.

Perl может быть скомпилирован как с компилятором ANSI C от IBM, так и с gcc. Рекомендуется первый, так как он не только без проблем компилирует Perl, но и может воспользоваться преимуществами перечисленных ниже функций, требующих использования флагов командной строки, специфичных для компилятора IBM.

Если вы решите использовать gcc, убедитесь, что ваша установка современная и полная, и обязательно прочтите файл Perl INSTALL для получения более подробной информации о gcc. Пожалуйста, сообщите команде разработчиков о любых трудностях, с которыми вы столкнулись.

Несовместимость с AIX Toolbox lib gdbm

Если на вашей системе установлена версия AIX Toolbox lib gdbm < 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, как указано выше.

Длинные типы double

IBM называет свою реализацию длинных типов double 128-битными, но это не IEEE 128-битный ("четверной точности"), который бы предоставил 116 бит мантиссы (и не реализован в аппаратуре), вместо этого это специальная программная реализация, называемая "double-double", которая предоставляет 106 бит мантиссы.

Похоже, что в этой реализации длинных типов double существуют различные проблемы. Если Configure обнаружит эту неисправность, он отключит поддержку длинных типов double. Это можно переопределить с помощью явного -Duselongdouble (или -Dusemorebits, что включает как длинные типы double, так и 64-битные целые числа). Если вы решите включить длинные типы double, для большинства неполадок 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–2020 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.28.3/perlaix

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API