개발자로서 Linux 사용자에게 소프트웨어를 쉽게 패키징하고 제공하려면 어떻게 해야 합니까?
~와 연관되다
- 컴퓨터(데스크탑)
- 불법강제 전문점과 용감한 대안점
- 버려진 소스 코드를 컴파일하면 귀하는 자신의 사용자이며 이것은 제품이 아닙니다.
출시된 제품과 관련이 있습니다.
하다아니요관련이 있다
가) 명령줄
b) 파일 생성
c) 빌드 스크립트
d) 소스
e) 온라인 또는 오프라인 프로젝트
주요 Linux 운영 체제 배포판이 이전에 모든 운영 체제에서 사용할 수 있었던 기능을 구현할 수 있는지 알고 싶습니다.
예:
I. 실행파일을 다운로드한 후 클릭하여 실행합니다.
2. 압축된 패키지를 다운로드하고 폴더에 압축을 푼 다음 파일 중 하나를 클릭하여 소프트웨어를 실행합니다.
삼. 더 이상 예시가 없습니다. 여기에 문제가 있습니다.
지정된 대상 플랫폼:
1.1 운영 체제 플랫폼 목표
1.2 GUI(OS 플랫폼 대상에 포함되지 않은 경우)
1.3 1.1 또는 1.2에 제공된 프레임워크.
간단히 말해서:진지한 개발자를 상상해 보세요. Linux에서 소프트웨어 제품을 제공하는 방법은 무엇입니까? 다운로드 링크를 클릭하고 실행하세요.
(저는 기업 환경에서 왔기 때문에 아직 이 포럼에서 "배달 가능" 태그 생성에 대한 평판을 얻지 못했습니다.)
참고하시기 바랍니다,형태여기서는 결과물에 대해 의문을 제기하지 않습니다. 예는 매우 간단할 수 있습니다.
A. 기본 디스플레이에 직사각형을 그립니다.
B. 창을 열고 다른 작업을 수행하지 마십시오.
C. 표준 파일 출력으로 파일을 열고 문자를 쓴 다음 닫습니다.
답변1
댓글의 설명을 바탕으로 질문을 다시 표현했습니다.
Linux에서 바이너리 실행 파일이란 무엇입니까?
이것은매우 낮은 주파수파일 및구현하다비트 설정. 바이너리 코드와 공유 라이브러리에 대한 참조는 파일에 저장되므로 운영 체제가 실행 파일을 시작할 때 최종 연결이 수행됩니다(Mac OS의 프레임워크 또는 Windows의 DLL과 유사). 종속성을 도입하는 마지막 단계가 걱정된다면 다음을 살펴보세요.나쁜 프로젝트이러한 이유로 정적 연결을 촉진합니다.
바이너리 실행 파일을 만드는 방법은 무엇입니까?
'Nix 전통에서는 C로 프로그램을 작성하고 cc
("컴파일 C" 또는 "C 컴파일러" 중 유효한 것) 명령을 사용합니다. 그러면 C 코드가 컴파일되고 링크되어 실행 중인 아키텍처에 대한 바이너리 코드가 포함된 ELF 파일이 생성됩니다. 여러 소스 파일로 작업할 때 명령줄부터 make
GUI IDE까지 이 프로세스를 관리하는 다양한 도구가 있습니다 . 컴파일러와 인터프리터는 다양한 프로그래밍 언어에 사용할 수 있으므로 C에만 국한되지 않습니다.
진지한 개발자를 상상해 보세요. Linux에서 소프트웨어 제품을 제공하는 방법은 무엇입니까? 다운로드 링크를 클릭하고 실행하세요.
Linux는 다양한 프로세서 아키텍처에서 실행되며 누구도 지원하지 않기 때문입니다."FAT" 바이너리 표준,그것은 불가능합니다. CPU용 실행 파일을 다운로드한 후 사용자는 실행 비트를 수동으로 설정해야 할 수도 있습니다(명령줄을 통해 쉽게 수행할 수 있지만 GUI를 통해 수행하기는 더 어렵습니다). 최종 사용자의 시스템에 있는 내용은 배포판, 설치 중에 사용된 설치 옵션, 사용자가 설치한 후에 설치된 패키지에 따라 다릅니다. 대부분의 배포판에서는패키지 관리자종속성을 해결하는 동안 추가 소프트웨어를 설치하십시오. Mac OS와 Windows에는 각각 하나씩 있지만데스크탑 환경, GNU/Linux에는 여러 가지가 있습니다(또는 설치하지 않았을 수도 있습니다). 외관상의 변경 외에도 각각은 서로 다른 인터페이스 표준(예: Windows 바로 가기 키 에뮬레이션)을 준수할 수 있으며 각각은 다양한 수준으로 명령에 의존할 수 있습니다.
즉, Canonical과 같은 프로젝트에 관심이 있을 수도 있습니다.스냅샷 스토어는 우분투 자체와 마찬가지로 "제품 소비자" 범주에 속하는 사용자와 보다 기술적인 사람들에게 어필하려고 노력하는 것으로 보입니다.
귀하의 질문에 대한 몇 가지 사항을 명확히 할 수 있습니다.
"데스크톱" 컴퓨터에 관심을 집중함으로써 랩톱을 배제하려는 것이 아니라 Linux가 일반적으로 관심을 갖고 있는 서버나 임베디드 시스템보다는 "개인용 컴퓨터" 또는 "워크스테이션"에 관심이 있다고 가정합니다.
"불법적 강제 독점" 또는 "용감한 대안" 상점이 무엇을 의미하는지 모르겠지만 귀하의 우려가 법적 성격에 관한 것이라면 Stack Exchange의법률 웹사이트.
내 해석은 귀하의 질문 대부분이 다른 문제를 소개하기보다는 바이너리 형식으로 소프트웨어를 제공하는 데 초점을 맞추고 있다는 것입니다.
성명서주요 Linux 운영 체제 배포판이 이전에 모든 운영 체제에서 사용할 수 있었던 기능을 구현할 수 있는지 알고 싶습니다.확실하지 않습니다. 수년에 걸쳐 다양한 운영 체제의 기능이 크게 달라졌습니다.
"기업 환경"에서 왔다고 해서 이 사이트의 평판 점수에 영향을 주어서는 안 됩니다.길이는 사용자를 식별하고 점수에 영향을 미칠 수 있는 조치를 취하는 데 사용될 수 있지만 이에 대한 증거를 본 적이 없으며 이런 일이 발생하고 있다는 암시조차 인식하지 못합니다.
질문 끝에 있는 목록에 포함된 각 기능은 소프트웨어에 의해 바이너리 형식으로 제공될 수 있습니다. 단, 사용자가 호환되는 환경을 실행하지 않을 수 있다는 점에 주의하세요. 예를 들어, 소프트웨어가 창을 열지 못할 수도 있습니다. 설치된 경우에만 콘솔에 있습니다.
답변2
모든 것을 무시하다정치적인귀하의 의견 중 일부와 함께 질문의 이 부분에 대해 고려/호언장담을 해보세요.
개발자로서 Linux 사용자에게 소프트웨어를 쉽게 패키징하고 제공하려면 어떻게 해야 합니까?
배포 개발자에게 연락하여 저장소에 소프트웨어를 포함하도록 설득합니다.
왜? 대다수의 Linux 사용자는 배포판에서 지원하는 패키지 관리자 이외의 소프트웨어를 설치하지 않기 때문입니다.
기간!
아래 추가 의견:
물론 Linux는 해결되지 않은 외부 참조를 남기지 않고 실행 가능한 코드를 실행할 수 있습니다.
즉, C 코드에서 다음을 사용하는 경우인쇄 기능또는어느함수의 경우 printf 또는 모든 함수에 대한 코드를 코드의 일부로 제공하거나 이러한 함수에 대한 코드를 제공하는 라이브러리에 대해 정적으로 링크해야 합니다.
당신이 언급한 1980년대와 달라진 것은 없습니다.
꽤 쉽게 디자인할 수 있습니다. (저는 가능한 라이센스에 대해 모두 모르기 때문에 배포에 대해서는 아무 말도 하지 않겠습니다.) 어쨌든독립적인libc, libm 및 libcurses를 사용한 일부 반그래픽 애플리케이션의 정적 링크.
물론 애플리케이션이 독립적으로 작동할 수 없을 때 큰 문제가 발생합니다. 이 시점에서는 애플리케이션이 모든 서버의 클라이언트가 되기를 원할 것입니다.
창문을 연다고 했는데...? (다른 모든 Windows 사용자가 열어 놓은 내용을 존중하기를 바랍니다.) 필요한 것은 X 서버의 도움이 아니라 현재 사용자 시스템에서 실행 중인 X 서버의 도움입니다.
물론 연결된 클라이언트 라이브러리를 정적으로 연결할 수도 있습니다. 하지만 사용자가 어떤 서버에서 어떤 버전을 실행할지 결정할 수 있습니까?
그렇지 않은 경우... 모든 X/database/... 서버에 대해 가능한 모든 클라이언트 라이브러리(가능한 모든 지원 버전)를 정적으로 링크해야 합니다...
일반 사용자라면 분명 메모리 낭비에 대해 불평할 것입니다. 왜냐하면 적절한 클라이언트 라이브러리가 이미 공유 라이브러리로 메모리에 로드되어 있기 때문입니다.
그래서 아니야! 상황은 처음부터 변하지 않았습니다. 제외하고... 아마도... 당신의 기대. :-피