2013-04-17 2 views
0

.so 파일이 .o 파일과 같다고 생각했습니다. 그리고 .o 파일은 하나의 .c 파일에서 직접 만들어 졌기 때문에 .so 파일에 여러 .c 파일의 링크가 필요한 이유가 혼란 스럽습니다..so 파일을 빌드하는 데 여러 개의 .c 파일이 포함되는 이유

+0

하는 .so 파일이 라이브러리는 참조 여러 .o 인 파일을 즉 http://stackoverflow.com/questions/9809213/what-are-a -and-so-files –

+0

정확하고 중요한 부분입니다. 그 종속성 물건에 대해 –

답변

2

.so 파일은 함께 사용되는 많은 코드를 컴파일하고 링크 한 최종 결과물입니다. 1 .c 파일 또는 여러 .c 파일로 만들 수 있습니다. 그것은 모두 코드 구성 방법에 달려 있습니다. .o 파일은 오브젝트 파일입니다. 하나의 파일을 컴파일하지만 링크하지 않은 결과입니다. 링커에서 다른 .o 파일과 결합하여 실행 파일 (.exe 또는 동등한 파일) 또는 라이브러리 (.so, .dll 등)로 사용합니다.

2

.so 파일이 .o 파일과 같다고 생각했습니다.

아니요, 아닙니다. .o 파일은 object code (.c 소스 파일을 컴파일하는 결과 임)이고 .so 파일은 dynamically linked libraries입니다. 이들은 잠재적으로 함께 링크 된 여러 오브젝트 파일로 빌드 될 수 있다는 점에서 실행 가능 파일과 유사합니다.

이유는 동적 라이브러리가 오브젝트 파일의 목적과 다른 목적을 제공하기 때문입니다 (즉, 동적으로 해석 할 수있는 방식으로 함수 및 기타 기호에 대한 액세스 제공) 의존성. 정상적인 독립 실행 형 파일처럼. 오브젝트 파일에는 해결되지 않은 종속성이있는 코드가 포함되어 있으며 직접 실행 파일은 아닙니다. 따라서 여러 오브젝트 파일에 대해 linkage을 수행하여 종속성을 분석하고 최종 파일을 작성합니다 (독립 실행 형 파일이 아니더라도 "실행 파일"이라고 함). 실행하지만, 동적 라이브러리, 커널 모듈 등)

+0

+1 – onmyway133

관련 문제