Linux ikili her türlü dağıtım için evrensel mi?


15

Linux'a model sim VHDL simülatörü takıyorum. Kılavuz sadece RedHat veya Suse'u desteklediğini söylüyor, ancak sadece Ubuntu'ya yüklemeye çalıştım. Ve herhangi bir sorun olmadan kurabilirim.

resim açıklamasını buraya girin

  • Linux ikili her türlü dağıtım için evrensel midir? Demek istiyorum ki, A dağıtımına ilişkin bir program yaparsam, herhangi bir linux üzerinde çalışacağından emin olabilir miyim?
  • Ticari program satıcılarının çoğu neden programın belirli bir dağıtımda çalıştığını söylüyor? (çoğunlukla Redhat ve Suse, ubuntu değil)

Yanıtlar:


15

Bu iki soru:

Bir Linux ikili dosyası tüm dağıtımlar için evrensel mi?

Değişir:

  • Program Linux çekirdeğinin dışında hiçbir şey kullanmıyorsa, 32 veya 64 bit soru dışında evrensel olacaktır. Bir Linux "merhaba dünyası" (sadece "merhaba dünyasını" bir terminal penceresine bastıran minimalist bir program) muhtemelen dağıtımdan bağımsız olabilir.
  • Program herhangi bir çekirdek olmayan kitaplık veya hizmet kullanıyorsa (Linux'un çoğu, çekirdek oldukça küçüktür), kitaplıkların dahil edildiği, bu kitaplıkların hangi sürümlerinde ve bulunduğu yerlerde farklılıklar vardır. Yani bu (en yaygın) durumda dağılımlar eşit değildir.

Neden birçok ticari program sadece bir veya birkaç dağıtım üzerinde çalıştıklarını söylüyor?

Çünkü çok sayıda Linux dağıtımı var ve kimse programlarını hepsinde test etmek istemiyor.

Ticari bir satıcı normalde yalnızca yazılımlarını test ettikleri dağıtımları desteklediklerini söyler. Diğer dağıtımlar üzerinde çalışabilir veya çalışmayabilir, satıcının bakış açısına göre mesele, desteklemedikleri bir dağıtım üzerinde çalışmazsa şikayet edememenizdir.

Test için hangi dağıtımların seçileceği, satıcının müşterilerinin kullanmasını beklediğine bağlıdır. Ticari / profesyonel programlar, muhtemelen "işletim sistemi için ödeme yapan kişilerin yazılımımız için ödeme yapma olasılığı daha yüksektir" gibi, muhtemelen sadece mevcut müşterileri tarafından kullanılan dağıtımları sayarak, kurumsal dağıtımları seçerler.

Ayrıca Ubuntu ve Debian arasındaki ikili uyumluluk konusunda Mark Shuttleworth'a (ilk etapta bir Ubuntu'ya sahip olmamızın nedeni) bakınız - Debian, Ubuntu'nun en yakın dağıtım akrabasıdır .


2

Hem RedHat hem de SUSE, uzun süredir kurumsal Linux geleneğine sahip ve bu paketleri onlar için üretip test etmeyi başardı. Zaman geçtikçe, Ubuntu üzerinde çalıştığı test edilen daha fazla paket örneği olacak. Aslında, geçen yıldan beri böyle birçok paket Ubuntu ile çalışmak için test edilmiş olarak geliyor. Canonical daha fazla satıcıyla anlaşma yaptıkça daha fazla Ubuntu sertifikalı paketler olacak.

İlk sorunuz için: Tüm dağıtımlarda çalışan bir program yapmak istiyorsanız, statik (dinamik ile karşılaştırıldığında) yürütülebilir bir dosya oluşturun. Bir statically-linkedyürütülebilir dosya sistem kitaplıklarına bağlı değildir, bu nedenle mimari (Intel / AMD gibi) aynı olduğu sürece dağıtımlar arasında çalışabilir.

İşte bir program,

int main(void)
{ 
  printf("Hello, World!\n");
  return 0;
}

Normal olarak derleyelim,

$ gcc helloworld.c -o helloworld
$ ./helloworld
Hello, World!
$ ldd helloworld
    libc.so.6 => /lib/libc.so.6 (0x00007f3cc3481000)
...
$ 
$ gcc helloworld.c -static -o helloworld_static
$ ./helloworld
Hello, World!
$ ldd helloworld_static
    not a dynamic executable
$ 

Peki, bu VHDL programıyla ne yapabilirsiniz? .Rpm dosyasını alın ve yabancı kullanarak .deb dosyasına dönüştürün . Ardından yükleyin. Eğer işe yaradıysa, iyisin. Değil işi, kullanımını yaparsa lddşekle kitaplık dosyası eksik hangi. En kötü senaryoda, diğer Linux dağıtımları için bir sanal makine oluşturun ve programı orada çalıştırın.


1

Jg-faustus'un cevabını ikinci olarak verdim, ancak paket formatı konusunda da dikkatli olmalısınız. Yürütülebilir dosyalar kendileri taşınabilir ve gerekli tüm kitaplıklar mevcut olsa bile, farklı dağıtımlar dosyaları farklı yerlere koyar ve yüklü paketleri yönetmek için farklı araçlar kullanır. Satıcı ürünlerini RPM paketi olarak paketlerse, ' alien 'dönüştürmek ve Ubuntu gibi DEB tabanlı bir dağıtım altında yüklemek için.

Yazılımlarını kaynak kodu olarak dağıtırlarsa, o zaman kendiniz de derleyebilirsiniz, bu noktada yürütülebilir dosya belirli sisteminiz için uyarlanır (ancak ubuntu paket yöneticisi bunu bilmez).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.