2012-07-03 18 views
12

Şu anda C++ yazılımımı, verilen gcc'yi kullanarak linux'un (SLED 10) belirli bir eski sürümünde derledim ve daha yeni bir glibc'ye sahip oldukları için daha yeni sürümlerde çalışabilirim. Sorun şu ki, eski gcc C++ 11'i desteklemiyor ve yeni özellikleri kullanmayı çok isterim.Eski Linux'u daha yeni gcc/clang ile hedefleyebilir miyim? C++

Şimdi bazı fikirlerim var, ama eminim diğerlerinin de aynı ihtiyacı vardır. Aslında senin için ne işe yaradı?

Fikirler: daha yeni sistemde

  1. Yapı, yeni glibc'nin statik bağlantı. (Mümkün değil, değil mi?)
  2. Daha yeni bir sistem oluşturun, derleyin ve eski bir glibc ile bağlantı kurun.
  3. Güncelleştirilmiş bir gcc kullanarak eski bir sistem üzerinde eski glibc'ye karşı bağlantı kurun.
  4. Daha yeni bir sistem kurun, daha yeni glibc'ye dinamik bağlantı kurun, RPath'ı ayarlayın ve glibc'yi yükleyiciye sağlayın.

Yazılım olarak, yazılımım eklentileri de destekliyor ve bir SDK'sı var. Müşterilerimin kütüphanelerime karşı büyük bir güçlük çekmeden derlemelerini tercih ederim.

Şimdiden teşekkürler. Fikirler hoş geldiniz, kanıtlanmış çözümler tercih edilir.

cevap

2

Daha yeni gcc ile oluşturun. Yeni derleyiciyi eski makineye kurun veya yeni makinenize yerleştirin ve eski makineye gerekli dinamik kitaplıkları yükleyin. bunlar genellikle sürüm atanır beri libc'nin birden fazla sürümü (ve ayrıca libstdC++) tek makinede desteklendiğini

Not (yani libc.so.5, libc.so.6, vs)

+0

bu benim seçenek 3 mi ? Daha eski bir libc'e karşı daha yeni bir gcc bağlantısı mı yoksa yeni bir libc ile bağlantı kurup onu dağıtmamı mı öneriyorsunuz? – David

+0

Muhtemelen sizin seçenekinize daha yakındır. 4. Libc veya libstdC++ dosyasını dağıtmayın, hedef makinede doğru ayarların yüklü olduğundan emin olun. –