하지만 그들은 비슷한 지시를 내렸습니다
cd downloaded_program
./configure
make install
그러면 필요한 ELF와 일부 .so 파일이 생성됩니다.
Windows 앱처럼 다운로드할 수 있도록 zip 파일에 넣는 것은 어떨까요? 사용자가 이를 컴파일해야 하는 이유가 있나요?
답변1
요인을 분석해보자..
분석하다:
플랫폼 종속성에 따라 다름: 개발자가 애플리케이션의 여러 아키텍처별 변형을 생성하고 유지 관리하는 환경에서는 몇 가지 문제가 발생합니다.
다양한 변형에는 다양한 소스 코드가 필요합니다. 다양한 UNIX 기반 운영 체제는 동일한 작업을 수행하기 위해 다양한 기능을 사용할 수 있습니다(예: strchr(3) 대 index(3)). 마찬가지로, 다양한 변형에 대해 다양한 헤더 파일을 포함해야 할 수도 있습니다(예: string.h 대 strings.h).
다양한 변형에는 다양한 빌드 프로세스가 필요하며 이는 플랫폼마다 다릅니다. 차이점에는 컴파일러 위치, 컴파일러 옵션 및 라이브러리와 같은 세부 사항이 포함될 수 있습니다.
다양한 변형에 대한 빌드는 별도로 유지되어야 합니다. 소스 트리가 하나뿐이므로 한 아키텍처의 대상 모듈 및 실행 파일이 다른 아키텍처의 것과 혼동되지 않도록 주의해야 합니다. 예를 들어, 링크 편집기는 SunOS-4용으로 구축된 객체 모듈을 사용하여 IRIX-5 실행 파일을 생성하려고 시도해서는 안 됩니다.
각 운영 체제에는 고유한 링크 관리 체계가 있으며 필요에 따라 ELF(Executable and Linkable Format) 파일을 준비해야 합니다.
컴파일러는 일련의 빌드를 생성합니다.지시하다, 서로 다른 아키텍처는 서로 다른 명령어 세트를 의미합니다(명령어 세트 아키텍처 비교). 따라서 컴파일러 출력은 아키텍처마다 다릅니다(예: x86, x86-64, ARM, ARM64, IBM Power ISA, PowerPC, Motorola's 6800, MOS T 6502 및다른 것도 많이 있어)
안전:
- 바이너리를 다운로드하면 그것이 말하는 대로 작동하는지 확신할 수 없지만 소스 코드를 감사하고 시스템에서 자체 컴파일된 바이너리를 사용해 볼 수 있습니다. 그럼에도 불구하고 사용자들은기술 매거진그는 자신의 의견에서 코드를 감사하려면 보안 보증이 아니라 코드를 평가하는 지식이 풍부하고 유능한 코더가 필요하다는 점을 잘 지적했습니다.
시장: 이 부분에는 여러가지 요인이 있지만, 복구해보도록 하겠습니다.
모든 회사가 모든 플랫폼을 포괄하는 것을 목표로 하는 것은 아니며 시장과 플랫폼의 인기, 판매하려는 제품에 따라 다릅니다.
자유 소프트웨어의 정신은 소프트웨어를 가능한 한 널리 사용할 수 있도록 만드는 것입니다. 그러나 이것이 소프트웨어가 모든 플랫폼에 맞게 설계되었다는 의미는 아니며 이를 지원하는 커뮤니티에 따라 다릅니다.
결론적으로:
모든 소프트웨어가 모든 플랫폼에 맞게 설계된 것은 아닙니다. 모든 아키텍처와 플랫폼에 바이너리를 제공한다는 것은 모든 플랫폼에 대해 바이너리를 컴파일하고, 테스트하고, 유지하는 것을 의미합니다. 이는 더 많은 작업이 필요하고 때로는 비용이 너무 많이 들기 때문에 사용자가 자신의 플랫폼에서 컴파일하는 경우 피할 수 있습니다. 게다가 사용자는 자신이 무엇을 하고 있는지 알게 될 것입니다.
답변2
*nix와 둘 다 너무 많은 플랫폼과 소프트웨어 환경을 보유하고 있습니다.다른, 소프트웨어는 그 위에서 실행될 수 있으므로 응용 프로그램(또는 응용 프로그램과 함께 사용할 라이브러리)을 구축할 수 있도록 하는 것이 "좋은" 소프트웨어 프로젝트 수만큼 이러한 구성 요소의 조합을 지원할 수 있는 유일한 현실적인 방법입니다. 물론 GPL과 같은 라이선스에는 소스 코드가 필요합니다.사용 가능- 따라서 소프트웨어가 작동하지 않더라도 일반적으로 사용자에게는 가능합니다. (문제가 무엇인지, 해결 방법을 이해하는 것은 까다로울 수 있지만)아니면 어떤 제3자작성자가 그렇게 할 수 없거나 더 이상 존재하지 않거나 존재하지 않더라도 들어가서 수정하세요.
소프트웨어를 소스 코드로 배포하면독립적으로 검증됨소프트웨어는 주장하는 대로 수행하며 불쾌한 작업을 대신 또는 동일하게 수행합니다. 제작자에 대한 신뢰 수준은 낮아지지만 실제로는 향상됩니다!
답변3
첫째, 귀하의 질문은 결함이 있는 전제에 기초하고 있습니다. 프로그램예컴파일된 형식으로 배포됩니다!
Ubuntu에 소프트웨어를 설치하는 일반적인 방법은 대부분의 다른 Linux 배포판에서와 마찬가지로 패키지를 설치하는 것이며, 대부분의 Unix 변형에서 더 일반적으로 사용됩니다. Ubuntu에서는 소프트웨어 센터나 기타 패키지 관리자를 열고 사용 가능한 소프트웨어를 찾아봅니다. 패키지 설치를 선택하면 바이너리(패키지에 프로그램이 포함된 경우)가 컴퓨터에 다운로드되어 설치됩니다.
기본적으로 패키지 관리자는 배포판 관리자가 만든 패키지를 제공합니다. Ubuntu에서 제공하는 타사 패키지 소스도 찾을 수 있습니다.암페타민제3자가 패키지를 제공하는 표준화된 방법으로 사용됩니다.
작성자로부터 컴파일된 소프트웨어를 다운로드하는 것은 최후의 수단입니다. 소프트웨어가 패키지화될 만큼 대중적이지 않거나 아직 패키지화되지 않은 최신 버전이 절대적으로 필요한 경우에만 이 작업을 수행하면 됩니다. 대부분의 사람들은 이 작업을 수행할 필요가 없습니다.
소프트웨어가 패키지되지 않은 상태로 배포되는 경우 일반적으로 바이너리 형식이 아닌 소스 코드 형식으로 배포됩니다. 이런 일은 Linux 세계에서는 꽤 자주 발생하지만 Windows 세계에서는 거의 발생하지 않습니다. 그 이유는 두 가지입니다. 한 가지 이유는 Linux에서 오픈 소스 프로그램의 비율이 훨씬 높기 때문입니다. 분명히 프로그램의 소스 코드를 사용할 수 없는 경우 유일한 배포 형태는 바이너리 파일입니다. 또 다른 이유는 Linux 세계가 더 다양하다는 것입니다. 호환되지 않는 각 라이브러리 버전 세트에는 서로 다른 바이너리가 필요합니다. 이는 일반적으로 각 배포 버전마다 서로 다른 바이너리를 의미합니다. Windows는 각 패키지 작성자가 자신의 프로그램과 함께 사용하는 라이브러리를 배포하도록 하여 이 문제를 "해결"합니다(결과: 컴퓨터는 이를 사용하는 각 프로그램마다 하나씩 각 라이브러리의 많은 복사본을 저장합니다. 라이브러리가 오류를 수정하면 모든 프로그램은 이 라이브러리)를 사용하려면 업데이트가 출시되어야 함), 운영 체제의 새 버전이 3년 정도마다 출시됩니다. Unix는 더 다양하고 시기적절한 버그 수정 습관을 갖고 있으며, 다양한 배포판에 대해 다양한 바이너리를 구축하여 라이브러리 배포 문제를 해결합니다.
답변4
물론 소스로 배포하는 원래 이유는 플랫폼 다양성이었습니다. Linux 커뮤니티는 이러한 이유와 새로운(부분적으로는 정치적인) 이유로 이 접근 방식을 계속 채택하고 있습니다.
예를 들어 Windows와 달리 Linux는 장기간에 걸쳐 ABI(Application Binary Interface)를 안정적으로 유지하려고 노력한 적이 없습니다. 따라서 실행 가능한 형식, 라이브러리 API 및 새로운 하드웨어 플랫폼에 대한 지원과 같은 영역의 혁신 가능성이 제한됩니다. 그것에 대해 더 자세히 설명합니다. 중요한.
상용 운영 체제는 엄격한 혁신을 통해 장기적인 애플리케이션 호환성을 달성합니다. 새로운 기능/소프트웨어 인터페이스는 항상 이전 기능 위에 추가되어야 합니다. 두 가지를 유지해야 하며 출시 후 변경 비용이 매우 높다는 점을 고려해야 합니다. . 또는 운영 체제용 소프트웨어를 작성하는 사람과 협력하여 계획된 응용 프로그램이 더 이상 사용되지 않는다는 사실을 받아들일 수 있습니다. 이는 Microsoft가 아니라 다른 운영 체제 공급업체를 의미하는 것입니다.
Linux 커뮤니티의 일부 구성원은 바이너리 형식(특정 Linux 배포판 외부)으로만 배포되는 소프트웨어에 대해 장기적으로 안정적인 플랫폼을 구현하는 것이 바람직하지 않다고 생각합니다. 두 플랫폼을 모두 사용하는 사용자로서 저는 이것이 좋다 나쁘다를 말하는 것이 아닙니다.