먼저이 질문이 학교/숙제와 관련이 있다는 기록을 밝히고 싶습니다.컴퓨터 간의 C 오브젝트 파일 호환성
컴퓨터 CP1과 CP2가 모두 동일한 운영 체제와 기계어를 공유한다고 가정 해 보겠습니다. C 프로그램이 CP1에서 컴파일 된 경우 CP2로 이동하려면 소스 코드를 전송하고 CP2에서 다시 컴파일하거나 객체 파일을 전송해야합니다.
내 대답은 객체 파일로 충분하다는 것입니다. C 코드는 컴파일러에 의해 어셈블리로 변환되고 어셈블러에 의해 기계 코드로 어셈블됩니다. 아키텍처가 동일한 머신 코드와 운영 체제를 공유하기 때문에 문제가 발생하지 않습니다.
하지만 더 많이 생각할수록 혼란스러워지기 시작합니다.
내 질문은 : 그 파일이 아닌 실행 파일을 이의를 참조하기 때문에
A), 내가 거기를 가정하고있어 더 연결 없었다. CP2에서 링크 할 때 표면에 문제가 있습니까?
b) CP1에서 C11 표준을 사용했지만 CP2의 유일한 컴파일러가 C99 인 경우 중요합니까? 일단 코드가 컴파일/어셈블 된 후에는 이것이 부적절하다고 가정합니다.
c) 질문에 공유/동적 링크 라이브러리가 지정되어 있지 않습니다. 프로그램이 .dll/.so/.dylib 파일에 아무런 의존성이 없다면 이것은 실제로 작동 할 것입니다. 그렇지 않으면 CP2에서도 필요합니다.
너무 많은 문제가있는 것처럼 느껴지고, 모호한 질문을 생각하면 지금은 단순히 다시 컴파일하는 것이 더 안전 할 것이라고 생각합니다.
하프!
컴퓨터간에 객체 파일을 복사하는 distcc는 C 언어의 경우에도 모든 노드에서 동일한 버전의 컴파일러를 사용하도록 권장합니다. – aschepler