리눅스 바이너리는 모든 종류의 배포판에 보편적입니까?


15

Linux에 모델 sim VHDL 시뮬레이터를 설치합니다. 매뉴얼은 RedHat 또는 Suse 만 지원한다고 말하지만 우분투에 설치하려고했습니다. 그리고 문제없이 설치할 수 있습니다.

여기에 이미지 설명을 입력하십시오

  • 리눅스 바이너리는 모든 종류의 배포에 보편적입니까? Distrubution A에서 프로그램을 만들면 어떤 리눅스에서도 실행될 수 있습니까?
  • 대부분의 상용 프로그램 공급 업체가 프로그램이 특정 배포판에서 실행되고 있다고 말하는 이유는 무엇입니까? (우분투가 아니라 주로 Redhat과 Suse)

답변:


15

이것은 두 가지 질문입니다.

Linux 바이너리는 모든 배포판에 보편적입니까?

때에 따라 다르지:

  • 프로그램이 Linux 커널 외부에서 아무것도 사용하지 않는 경우 32 비트 또는 64 비트 질문을 제외하고는 보편적입니다. Linux "hello world"(단말기 창에 "hello world"를 인쇄하는 최소한의 프로그램)는 배포판과 독립적 일 수 있습니다.
  • 프로그램이 커널이 아닌 라이브러리 나 서비스 (리눅스의 대부분인 경우 커널은 상당히 작음)를 사용하는 경우, 라이브러리가 포함되어 있고,이 라이브러리의 버전과 위치에 차이가 있습니다. 따라서이 (가장 일반적인) 분포는 동일하지 않습니다.

많은 상용 프로그램이 왜 하나 또는 몇 개의 배포판에서만 작동한다고 말합니까?

Linux 배포판매우 많기 때문에 아무도 자신의 프로그램을 테스트하기를 원하지 않습니다.

상용 공급 업체는 일반적으로 소프트웨어를 테스트 한 배포판 만 지원한다고 말합니다. 다른 배포판에서는 작동하지 않을 수도 있습니다. 공급 업체의 관점에서 볼 때 지원하지 않는 배포판에서는 작동하지 않으면 불만을 제기 할 수 없습니다.

테스트를 위해 어떤 배포판을 선택할지는 공급 업체가 고객이 사용하기를 기대하는 것에 따라 다릅니다. 상업용 / 전문 프로그램은 일반적으로 "OS를 지불 한 사람들이 소프트웨어 비용을 지불 할 가능성이 높다"는 것과 유사한 추론을 통해 엔터프라이즈 배포를 선택합니다.

우분투와 데비안의 바이너리 호환성 에 관한 Mark Shuttleworth (우선 우리가 처음으로 우분투를 만든 이유)를 참조하십시오 -데비안은 우분투와 가장 가까운 배포판 입니다.


2

RedHat과 SUSE는 오랫동안 엔터프라이즈 Linux 전통을 가지고 있으며 패키지를 생산하고 테스트 할 수있었습니다. 시간이 지남에 따라 우분투에서 작동하도록 테스트 된 패키지의 예가 더 있습니다. 실제로 작년 이후 많은 패키지가 우분투에서 작동하도록 테스트되었습니다. Canonical이 더 많은 공급 업체와 계약을하면 우분투 인증 패키지가 더 많이 제공 될 것입니다.

첫 번째 질문 : 모든 배포에서 실행되는 프로그램을 만들려면 정적 (동적에 비해) 실행 파일을 만드십시오. statically-linked실행 파일은 동일하므로 긴 (인텔 / AMD 등) 아키텍처로, 분포 사이에 작업 할 수 있습니다, 시스템 라이브러리에 의존하지 않습니다.

여기 프로그램이 있습니다

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

정상적으로 컴파일하자

$ 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
$ 

그렇다면 VHDL 프로그램으로 무엇을 할 수 있습니까? .rpm 파일을 받아서 alien을 사용하여 .deb로 변환하십시오 . 그런 다음 설치하십시오. 효과가 있었다면 괜찮습니다. 작동하지 않으면 ldd누락 된 라이브러리 파일을 확인하십시오. 최악의 시나리오에서는 다른 Linux 배포판을위한 가상 머신을 생성하고 거기서 프로그램을 실행하십시오.


1

두 번째 jg-faustus의 답변이지만 패키지 형식에 대해서도주의해야합니다. 실행 파일 자체가 이식 가능하고 필요한 라이브러리가 모두 있더라도 다른 배포판은 파일을 다른 위치에 놓고 다른 도구를 사용하여 설치된 패키지를 관리합니다. 공급 업체가 제품을 RPM 패키지로 패키지하는 경우 '와 같은 패키지를 사용해야합니다. Ubuntu와 같은 DEB 기반 배포판 아래에서 변환하고 설치하십시오.

그들이 그들의 소프트웨어를 소스 코드로 배포한다면, 당신은 또한 그것을 직접 컴파일 할 수 있습니다.이 시점에서 실행 파일은 특정 시스템에 맞춰질 것입니다 (그러나 우분투 패키지 관리자는 그것을 알지 못할 것입니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.