BSD'nin Linux ikili dosyalarını çalıştırmasına izin veren, ancak bunun tersi mümkün olmayan nedir?


42

BSD'nin Linux (ve diğer Unix benzeri) ikili dosyalarını çalıştırmasına izin veren nedir, ancak Linux (ve çoğu Unix benzeri) BSD ikili dosyalarını çalıştıramaz?


Bilmiyorum ama cevabın lisanslarıyla bir ilgisi olabilir. BSD'nin GPL ile uyumlu olmadığını, Linux devlerinin BSH argümanını "aceleci bir kelime" haline getirmediğini hayal ediyorum.

Yanıtlar:


55

Piyasa güçleri.

Özellikle Linux'ta hedeflenen, * BSD'den çok daha fazla program var. Birçok yazılım kaynak kodu her ikisinde de derlenebilecek kadar taşınabilir, ancak Linux ikili dosyalarını gönderen birçok yazılım üreticisi, BSD'ler için Linux'tan daha küçük pazar paylarına sahip oldukları için bunu yapmak için can atmıyorlar . ¹

Bir yazılım parçası yalnızca farklı bir işletim sistemi için ikili biçimde mevcutsa, ABI öykünmesi çalışmasını sağlamanın bir yoludur, bu BSD'lerin yaptığıdır.

Bir zamanlar, x86 Unix, Linux üzerinde bir pazar çoğunluğu elde ettiğinde , SCO Unix ve benzeri için oluşturulmuş ikili dosyaları çalıştırmasına izin vermek için iBCS özelliği Linux'a eklendi. Bu özelliğe olan ilgi, Linux'un pazar payı arttıkça azaldı, böylece Linux 2.3 geliştirme serisi sırasında umursamazlığa düşmesine izin verildi. ” SCO davaları , bu özelliğin Linux dışında kullanılmasına yardımcı oldu, ancak bunun piyasa kaybına ikincil olduğuna inanıyorum. özelliği doğuran kuvvet.

Linux'un bir gün BSD ikili dosyalarını çalıştırmak için iBCS benzeri bir özellik alamamasının teknik bir nedeni yoktur, ancak BSD ve Linux'un piyasa pozisyonları bir nedenden ötürü değişmediği sürece olası değildir.

Bugün böyle bir şey için çok az çağrı var. Linux için inşa edilmemiş BSD için yalnızca kaç tane ikili program bulunduğunu biliyorsunuz? Bazıları olmalı ama sanırım çoğu Junos gibi gömülü BSD'ler içindi . Böyle bir özellik, Linux'ta başka türlü çalışmayan bir dizi programın çalışmasına izin vermezse, oluşturulmaz. ”


Dipnotlar:

  1. Burada OS X'i BSD olarak saymıyorum, çünkü bu ayrı bir ikili uyumluluk sorunu. FreeBSD'den OpenBSD ve NetBSD'nin kullanımı ELF OS X kullanır ise, x 86 ile tamamen farklı bir yürütülebilir biçimi . Dinamik bağlantı ayrıca OS X'te geleneksel x86 BSD'lerden çok farklıdır .

    Linux-OS X ikili uyumluluk hikayesi hakkında daha fazla bilgi için bu soruya bakın .

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Gibi köpekbalığı belirli türlerinin ileri kalıplan durduğu, yazılım. Bu fenomene , yazılım söz konusu olduğunda boğulma yerine bit-çürük diyoruz , ancak neden ve sonuç aynı.

  4. Linux'un Windows XP için yazılmış sadece ikili ağ kartı sürücülerini çalıştırmasını sağlayan Contrast NDISwrapper . Bir ihtiyaç tespit edilir ve bir ihtiyaç doldurulur. Bu sadece BSD ikili dosyalarını çalıştırma ihtiyacı nerede?


3
Linux, yerel olmayan ikili dosyaları binfmt_misc, isteğe bağlı ikili format işleyicilerini kaydetmenize olanak sağlayan modül aracılığıyla yürütecek altyapıya sahiptir . Bazı insanlar Mono uygulamalarını bu şekilde çalıştırıyor, bunun nadir olduğunu düşünüyorum. Ama dediğiniz gibi, hiç kimsenin bir * BSD binfmt işleyicisi yazmak için pek bir nedeni yoktu.
KutuluMike

Bu gerçekten yardımcı oldu. Sadece FreeBSD kılavuzlarına bakıyordum (soru sormadan önce) ve BSD'nin çapraz-nix ikili dosyalarını kaldırabildiğini ve Linux'un yapamayacağını söylüyordu ama açıklamıyordu. Bu mantıklı, dürüst olmak gerekirse, neden piyasa güçleri olmaktan çok teknik bir sebep bekliyordum, ama dürüst olmak gerekirse, [teknik nedenler ve popülerlik] benden çok daha yakınlarmış gibi görünüyor.
Zaman Yok,

3
Bunun sadece BSD ile ilgili olmadığını unutmayın. Tüm Unices genelinde bu aynı eğilimi görüyorsunuz : o zamanlar Linux hemen hemen tüm Unix ikili dosyalarını çalıştırabilirdi: iBCS destekli Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware, USL, Dell vb.) , SVR3 jenerik, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 ve muhtemelen başkalarıdır. Günümüzde, bunun tersi de geçerli: tüm modern Unices, Linux ikili dosyalarını çalıştırmayı destekliyor. Bu özelliğin o kadar önemli olduğunu gösteren iki örnek var ki, satıcı ismini bile koyuyordu! ("Linux" için IBM AIX 5L, "entegrasyon" için HP-UX 11i.)
Jörg W Mittag

1
@ JörgWMittag Ne AIX 5L ne de HP-UX 11i, aslında Linux ikili dosyalarını çalıştırmaz, ilk başta x86 mimarisini desteklemediklerini söylemez. Sağlayabilecekleri kaynak kodundan HP-UX ikili dosyalarına ve AIX'in oluşturulmasını kolaylaştıran bir GNU geliştirme ortamıdır.
jlliagre
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.