2011-08-18 3 views
4

나는 C 언어를 배우고 있으며 질문이 있습니다. 하나의 Windows PC에서 BorlandC에서 C 프로그램 용 컴파일러를 컴파일하고 컴파일 한 다음 컴파일러가없는 다른 Windows PC로이 파일을 전송하는 경우 C 런타임이없고 메모리 관리가 어떻게 이루어지는 지 어떻게 실행합니까? 작업?C 런타임 이해

답변

4

정적 연결을 사용하면 비교적 쉽게 고통스러운 방법으로이를 수행 할 수 있습니다. 이것은 실행 시간에 동적으로로드되지 않고 (다른 컴퓨터에서) 컴파일/링크 할 때 런타임 라이브러리가 실행 파일에 바인딩된다는 것을 의미합니다. 당신이 동적 링크를 사용하는 경우

후 라이브러리는 코드를 실행하는 런타임에 사용할 수 있도록, 그래서 로더 (OS의 일부)을 찾아 그들을 연결할 수 있습니다.

들어 정적/동적 연결 차이에 대한 좋은 설명은 here을 참조하십시오.

2

C 언어의 경우 종종 "libc"라는 공유 라이브러리가 있으며이 라이브러리는 OS와 함께 제공되어야합니다. 메모리 관리는 malloc (calloc 등)을 사용하는 자신의 프로그램에서 처리되며 무료입니다. 그들은 또한 도서관의 일부입니다.

컴파일러와 런타임은 때때로 함께 묶이지 만 다른 경우 (컴파일러없이 런타임 바이너리를 설치할 수 있음)에 유의하십시오.

+0

"종종"libc라는 라이브러리가 있습니까? –

+0

리눅스에서는 libc라고 부르기도하고, gnu 버전은 glibc라고합니다. 이름은 URL http://www.gnu.org/software/libc/libc.html에 의해서도 표시됩니다. –

+0

호스트 된 환경에는 표준 라이브러리가 항상 _ 항상 있습니다. 링커가 거의 없기 때문에 항상 libc.whatever라고합니다. 'libNAME.whatever' 형식이 아닌 라이브러리에 링크합니다 (플랫폼에 맞는 적절한 공유 라이브러리로'무엇이든 '변경). –