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.