이 의미의 바이너리는 프로그램에 운영 체제 호출로 귀결되는 printf()가있을 때 운영 체제 호출을 만들기 위해 컴파일됩니다. 만약 컴파일 된 운영체제가 64 비트 레드햇 리눅스라고한다면, 바이너리는 레드햇 리눅스 경로에서 공유 라이브러리를위한 레드햇 리눅스 이름을 찾을 것입니다. 완전히 다른 운영체제, Mac OS X, 시스템 호출, 공유 라이브러리 또는 정적 라이브러리 등과는 어떤 방식 으로든 모양이나 형태가 전혀 다릅니다. 미니 쿠퍼에서 벗어나 그것을 볼트로 연결하는 것 자전거에. 예, 한 번에 그것이 원시 금속과 고무 였고 자전거 타이어로 형성 될 수있었습니다. 그러나 일단 바이너리, 자동차 타이어 또는 자전거 타이어를 만들면 그것이 바로 그 것입니다. 때로는 posix 시스템 상단에 창을 에뮬레이트하는 와인과 같은 에뮬레이터가 있습니다. 또는 전체 컴퓨터를 가상화하여 다른 운영 체제를 다른 운영 체제에서 실행시킬 수있는 vmware와 같은 가상 시스템입니다.
일반적으로 이전의 C 프로그램을 사용하지 않고 gcc 컴파일러가있는 운영 체제에서 컴파일하고 실행할 수는 없습니다. 네, 이식 가능한 C 프로그램을 작성하는 방법을 배울 수 있지만 모든 대상 플랫폼에서 지원되는 라이브러리를 신중하게 사용해야합니다. 그래서 심지어 귀하의 프로그램에 대한 소스 코드를 가지고 Mac으로 컴파일하고 컴파일하는 것이 반드시 작동하지는 않습니다.
x86-64를 실행하지 마십시오? 어떤 의미에서 컴파일러는 x86 어셈블리 (두 시스템에서 모두 동일 함)로 컴파일합니다. 그렇다면 어셈블러가 어셈블리 코드를 각 시스템의 다른 바이너리 파일로 변환한다는 의미일까요? – darksky
실제 지침에 대한 컴파일 결과는 동일하지만 Nayefc OS가 있다고 말할 수 있습니다. 먼저 모든 전역 변수로 실행 파일을 배치 한 다음 함수, 하드 코드 된 텍스트 문자열을 원하는지 결정할 수 있습니다. 이제 Adrian OS를 작성했습니다. 처음에는 함수가 먼저 나온 후 27680 바이트의 간격이 생겼습니다. (내가 좋아하기 때문에) ..- 요점을 얻었습니다. 따라서 Windows EXE는 Linux exe와 다를 수 있으며 Mac exe가 가능합니다 –