İlk görevim mod_perl 2.0.6 + Apache 2.2.22'yi yüklemek oldu.
Mod_perl derlenirken işlem, off64_t
ile ilgili birçok hatayla durdu. Böylece daha derine inmeye başladım. Öncelikle, iki yeni Perl 5.8.9 örneğini yükledim (çünkü bu sürümü kullanmam gerekecek): bir dişli sürüm ve bir iş parçacığı olmayan (aynıdır, yalnızca usethreads
farklıdır). Dişli Perl kullanarak aynı şeyi çoğaltmaya çalışmak, başarı ile bitmiş ve hiç off64_t
hata içermez.
Sonuç şu: bariz Perl, off64_t
nolu, iş parçacığı olmayan dişliyi içeriyor. ayrıca arama
, I config.h
iki Perl'es arasında (core/<arch>/CORE
den) karşılaştırılmıştır ve hat 3671 de I (dişli olmayan Perl) görebilirsiniz:Neden olmayan bir Perl, iş parçacığı etkin olanla karşılaştırıldığında off64_t türünü kullanmıyor?
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
/*#define HAS_OFF64_T /**/
ve ipliklerin özellikli Perl: Her iki Perl örnekleri için
#define HAS_OFF64_T /**/
perl -V
ccflags ='... -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ...'
olarak kullanılan derleyici bayrakları bildirir.
Anladığım kadarıyla büyük dosyaları için off64_t
kullanılır ve konuyla ilgisi yoktur. Kaynak şeffaf off64_t
ile değiştirilir _FILE_OFFSET_BITS = 64
bu tip (diğer bir deyişle off_t
) ile derlendiği
: I
off_t
veoff64_t
ilgili bu bilgi bulunamadı. Kısa bir süre
: usethreads
yapılandırma parametresi: 2 aynı Perl, tek fark oluşturur vardır. Dişli Perl, off64_t
'u sağlar, dişli olmayan bir tane yoktur.
Soruma İşte soru: Neden bu büyük bir dosya için kullanılmalı iş parçacığı için kullanılacak bu off64_t
veri türüne neden ve nasıl bağlanır?
Bilgi: Arch Linux OS 32 bit 2.11.1 libc (çekirdek 2.6.33), gcc 4.5.0, standart Perl 5.8.9
Notlar: off64_t
hattı 15526 de Configure
işlenir, bir Basit try.c
oluşturulur ve derlenmeye çalışıldı. Soru, Perl'in işlenmemiş parçacığı olmasa bile, Perl-olmayan Perl'in onu derleyememesidir.
Lütfen dağıtım ve mimariyi belirtin –
ve işletim sistemi :) –
Linux ile ilgili hatalar kolayca tespit edilebildiğinden, 5.14.2 ile derlemeye çalıştığınızda hata büyük olasılıkla zaten giderilmiştir. 5.8.9 ** [desteklenmiyor] (http://p3rl.org/perlpolicy#MAINTENANCE-AND-SUPPORT) ** artık. Gördüğünüz gibi, GCC'nin, httpd ve mod_perl'in oldukça modern sürümlerine sahip olursunuz, hiç kimsenin bir çalışma ya da hata düzeltmesi yapamayacağı bir Perl'e yapışmak hiçbir anlam ifade etmez. – daxim