2013-01-16 30 views
5

için ben statik olarak derlenmiş ve bir yukarı güncel Linux makine bir program bağlantılı ve 9 yaşında bir başka Linux koştum. Bana "FATAL: kernel çok eski" bir hata verdi ve çıkın. Spesifik olarak, yeni bir tanesi Fedora 18 (gcc 4.7.2, glibc 2.16, çekirdek 3.7.2) ve diğeri RHEL4.8'dir (glibc 2.3.4, çekirdek 2.6.9). Statik bağlantı olduğundan, glibc sürümü önemli olmamalıdır. Sanırım sorun, programın eski çekirdekte olmayan sistem çağrılarını çağırmasıdır. Derleme programı eski kernel

eski sistemde gelişme bir seçenek değilse

, nasıl yeni sistemde program oluşturmak ve daha yaşlı (veya daha iyisi her ikisi) çalışabilir? GCC'yi eski bir sistem çağrısı olarak adlandırılan uyumlu bir modda çalıştırmak için bir yol arıyordum. Henüz şans yok.

+2

Glibc'nin eski bir sürümünü alın ve ona karşı bağlantı oluşturun. Yeni glibc eski çekirdeklerde çalışmayacak. –

cevap

5

kolay seçenek her zaman eski sistemde oluşturmaktır.

Alternatif kişilere karşı yeni ve bağlantı eski sistemden glibc başlıklarını ve statik kütüphaneleri kopyalayın. Bu işe yaramazsa

, böyle --enable-kernel=2.6.9 falan glibc yeniden gerekecek.

+0

Teşekkürler. Eğer glibc'yi enable-kernel ile yeniden kurarsam, libgpeg gibi diğer tüm kütüphaneleri glibc ile yeniden kurmak zorunda mıyım? Başka bir deyişle, stokum libjpeg ile özel glibc bağlantımı yapabilir miyim? –

+0

Ben inanmıyorum. Bayrağın sadece sistem çağrılarının arka uç kullanımını değiştirdiğini düşünüyorum, ancak yine de aynı C kütüphanesini kullanıyorsunuz. En son C kitaplığının yalnızca bir tarihten sonra çekirdekleri desteklediğini görebilirsiniz, bu nedenle bu kadar ileri gitmek için eski sürüme geçmeniz gerekebilir. Eski kitaplığı sistem kitaplığı olarak yüklemenizi tavsiye etmem. Sadece yapınız için ona bağlayabileceğiniz yere koyun (bazı özel derleyici bayraklarına ihtiyacınız olacaktır). – ams