Почему Perl без потоков -не использует тип off64 _t по сравнению с типом с поддержкой потоков -?

Моей первоначальной задачей было установить мод _perl 2.0.6 + Apache 2.2.22.
Процесс остановился с большим количеством ошибок, связанных с off64_tпри компиляции мода _perl. Итак, я начал копать глубже. Во-первых, я установил два новых экземпляра Perl 5.8.9 (, потому что мне придется использовать эту версию ):многопоточную версию и не -многопоточную версию (, они идентичны, только usethreadsотличается ). Попытка воспроизвести то же самое с использованием многопоточного Perl завершилась успешно и вообще без ошибок off64_t.
Вывод очевиден :многопоточный Perl обеспечивает необходимое off64_t, а не -не поточный Perl — нет.
Продолжая поиск, я сравнилconfig.hcore/<arch>/CORE)обоих Perl'ов, и в строке 3671 я вижу это (в Perl без -многопоточности):

    /* HAS_OFF64_T:
     *      This symbol will be defined if the C compiler supports off64_t.
     */
    /*#define       HAS_OFF64_T             / **/

и в потоках -включенных Perl:

    #define HAS_OFF64_T            /**/

perl -Vдля обоих экземпляров Perl сообщает ccflags ='... -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64...'как используемые флаги компилятора.

Насколько я понимаю, off64_tиспользуется для больших файлов и не имеет отношения к потокам. Я нашел эту информацию о off_tи off64_t:

. Если исходник скомпилирован с _FILE_OFFSET_BITS = 64, этот тип (, т.е. off_t), прозрачно заменяется на off64_t.

Коротко:Есть 2 идентичные сборки Perl с единственным отличием :в параметре конфигурации usethreads. Threaded Perl включает off64_t, а не -— нет.

Мой вопрос::Почему это происходит и как потоки связаны с этим off64_tтипом данных, который следует использовать для больших файлов, а не для потоков ?

Информация :Arch Linux OS 32 -бит (ядро ​​2.6.33 ), gcc 4.5.0, libc 2.11.1,стандартный Perl 5.8.9

Notes:off64_tобрабатывается в Configureв строке 15526, генерируется простой try.cи пытается скомпилироваться. Вопрос в том, почему не -многопоточный Perl не может его скомпилировать, а многопоточный Perl может.

6
задан ArtM 6 May 2012 в 12:29
поделиться