BSD가 Linux 바이너리를 실행할 수 있지만 그 반대는 무엇입니까?


42

BSD가 Linux (및 기타 Unix와 유사한) 바이너리를 실행할 수 있지만 Linux (및 대부분의 다른 Unix와 같은)는 BSD 바이너리를 실행할 수 없습니다.


모르지만 대답은 라이센스와 관련이있을 수 있습니다. BSD가 GPL과 호환되지 않는다고 생각할 것입니다. 대부분의 Linux 개발자는 단순히 BSD 논쟁을 허쉬 단어로 만들지 않습니다.

답변:


55

시장 세력.

* BSD보다 Linux를 겨냥한 더 많은 프로그램이 있습니다. 많은 소프트웨어 소스 코드 는 이식성이 뛰어나 두 언어 모두에서 컴파일 할 수 있지만 Linux 바이너리를 제공하는 많은 소프트웨어 제작자는 Linux 보다 시장 점유율이 적기 때문에 BSD에 대해 그렇게 신경 쓰지 않습니다 . ¹

소프트웨어가 다른 OS에 대해 이진 형식으로 만 제공되는 경우 ABI 에뮬레이션을 실행하는 한 가지 방법입니다. 이것이 BSD가하는 일입니다 .²

옛날에 x86 Unix가 Linux보다 많은 시장을 차지했을iBCS 기능이 Linux에 추가되어 SCO Unix 용으로 작성된 바이너리를 실행할 수있게되었습니다. 리눅스의 시장 점유율 증가로이 기능에 대한 관심이이 파손로 분류 하였다 그래서, 거절 리눅스 2.3 개발 시리즈 중SCO 소송은 리눅스 중이 기능을 안내 도움,하지만 난 그 시장의 손실 보조 믿습니다 기능을 탄생시킨 힘.

Linux가 언젠가 BSD 바이너리를 실행하기위한 iBCS와 같은 기능을 얻을 수 없었던 기술적 이유는 없지만 어떤 이유로 BSD와 Linux의 시장 위치가 바뀌지 않는 한 가능성이 낮습니다.

오늘날에는 그런 일이 거의 없습니다. Linux 용으로 빌드되지 않은 BSD 용 바이너리 전용 프로그램은 몇 개입니까? 몇 가지가 있어야하지만 대부분 Junos 와 같은 임베디드 BSD 용이라고 생각합니다 . 이러한 기능은 Linux에서 달리 실행되지 않는 중요한 프로그램 세트를 실행할 수없는 경우에는 작성되지 않습니다.


각주 :

  1. 여기서는 별도의 이진 호환성 문제이므로 OS X를 BSD로 간주하지 않습니다. FreeBSD, OpenBSD 및 NetBSD 는 x86에서 ELF 를 사용 하는 반면 OS X는 완전히 다른 실행 형식을 사용 합니다 . 동적 연결은 또한 기존 x86 BSD와 OS X에서 크게 다릅니다 .

    Linux ⇔ OS X 바이너리 호환성 이야기에 대한 자세한 내용은 이 질문 을 참조하십시오 .

  2. FreeBSD ; OpenBSD ; NetBSD

  3. 특정 종의 상어 와 마찬가지로 앞으로 나아 가지 않는 소프트웨어는 죽습니다. 우리는이 현상 을 소프트웨어에 발생할 때 질식이 아닌 비트 로트 라고 부릅니다 . 그러나 원인과 결과는 같습니다.

  4. 대비 NDISwrapper -Linux에서 Windows XP 용으로 작성된 이진 전용 네트워크 카드 드라이버를 실행할 수 있습니다. 요구가 파악되고 요구가 채워집니다. BSD 전용 바이너리를 어디에서 실행해야합니까?


3
Linux에는 binfmt_misc모듈을 통해 비원시 바이너리를 실행할 수있는 인프라가 있으므로 임의의 바이너리 형식 핸들러를 등록 할 수 있습니다. 드물다고 생각하지만 일부 사람들은 이런 방식으로 Mono 응용 프로그램을 실행합니다. 그러나 당신이 말한 것처럼 아무도 * BSD binfmt 핸들러를 작성해야 할 이유가 없습니다.
KutuluMike

정말 도움이되었습니다. 방금 FreeBSD 매뉴얼 (질문을하기 전에)을 살펴 보았는데, BSD가 크로스 nix 바이너리를 처리 할 수 ​​있지만 Linux는이를 설명 할 수 없었습니다. 솔직히 말해서 나는 시장 세력이 원인이 아닌 기술적 인 이유를 더 많이 기대하고 있었지만 솔직히 말하면 [기술적 인 이유와 인기]는 나보다 훨씬 더 밀접한 관련이있는 것으로 보입니다.
시간 없음

3
그것은 단지 BSD에 관한 것이 아닙니다. 당신은 전역이 동일한 추세를 참조 모든 유닉스을 : 하루에 다시는, 리눅스는 거의 모든 유닉스 바이너리를 실행할 수 있습니다 : ibcs를 솔라리스, 386BSD, FreeBSD의, NetBSD의, BSDI / 386, SVR4 (대화, 유닉스웨어, USL, 델 등) 지원 , SVR3 일반, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 및 기타 일부. 요즘은 다른 방식으로 진행됩니다. 모든 현대 Unices는 Linux 바이너리 실행을 지원합니다. 이 기능은 벤더가 이름에 넣을 정도로 중요 하다고 간주되는 두 가지 예가 있습니다 ! ( "Linux"용 IBM AIX 5L, "통합"용 HP-UX 11i)
Jörg W Mittag

1
@ JörgWMittag AIX 5L 또는 HP-UX 11i는 실제로 x86 아키텍처를 지원하지 않는 것은 물론 Linux 바이너리를 실행하지 않습니다. 그들이 제공 할 수있는 것은 AIX 개발 환경을 용이하게하는 GNU 개발 환경이며, 소스 코드에서 HP-UX 바이너리를 해석합니다.
jlliagre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.