2010-06-23 4 views
1

실행 파일을 공유 할 때 실제로 실행 파일을 만드는 데 사용되는 라이브러리에 대해 걱정할 필요가 있습니까? exe를 생성 할 때 고려해야 할 것처럼 보입니다. 실행해야 할 때가 아닙니다. 그냥 궁금해서. 나는 걱정할 필요가 없지만 확실히하기 위해이 질문을하고 싶었다. 미안한 것보다 안전하다.라이브러리에 대한 exectuable 의존성

+0

"라이브러리에 대한 걱정"이라고 말하면 런타임에 실행 파일에 라이브러리를 사용할 수있게 만들거나 타사 라이브러리가 포함 된 실행 파일을 배포 할 때 라이센스 문제에 대해 이야기하고 있습니까? 내 실행 파일에 사용할 수있는 라이브러리는 – WildCrustacean

+0

입니다. 나는 진지하게 내가 동적으로 그랬는지 의심 스럽다. 나는 그것이 정적이라고 생각한다. 솔라리스 8을 확인하려면 어떻게해야합니까? – djones2010

답변

3

정적 연결과 동적 연결의 차이점은 다음과 같습니다. 정적 링크를 사용하면 추측했듯이 라이브러리 코드의 관련 부분이 바이너리에 직접 포함 (복사)됩니다. 동적 링크를 사용하면 런타임 종속성이 존재합니다. 바이너리는 OS 종속적 인 기술을 사용하여 Linux의 Win32 또는 SO의 DLL과 같은 (OS 종속적 인) 공유 라이브러리의 코드에 액세스합니다.

프로그램이 정적 링크로 컴파일되는지 동적 링크로 컴파일되는지 확실하지 않은 경우 컴파일러 설명서를 참조하십시오. 또한 바이너리의 헤더를 검사하여 "임포트 테이블"또는 이에 상응하는 도구를 구할 수있는 도구가 있으며이 라이브러리가 의존하는 공유 라이브러리를 결정할 수 있습니다. 이 목적을 위해 GNU objdump-x 옵션과 함께 사용합니다 (Linux 및 Windows 모두).

+0

솔라리스 8에서 어떻게 할 수 있습니까? 어떤 아이디어를 어떻게 내 빈을 확인해 볼 수 있는지 확인하려면? – djones2010

+0

나는 libcryptopp.a 파일을 참조하고 있다고 생각한다. 정적 링크라고 생각합니다. – djones2010

+0

예 .a는 정적 라이브러리 (아카이브)입니다. –

관련 문제