2014-10-18 1 views
0

헥스 편집기에서 정적 라이브러리 (VC++로 컴파일 됨)를 열었으며 모든 코드 파일과 헤더의 경로를 볼 수 있습니다. 나는 그들이 거기에서 봉사하는 목적을 이해하지 못한다.
이 아닌 방법이 있습니까 바이너리에 포함되어 있습니까? 나는 모든 옵션을 겪어 왔지만 아무것도 찾을 수 없었다.정적 라이브러리에서 코드 파일 및 헤더 경로가 하드 코딩 되었습니까?

+1

디버그 정보입니다. 이 정보없이 (릴리스) 빌드를 수행 할 수 있습니다. –

+0

http://msdn.microsoft.com/en-us/library/958x11bc.aspx – NPE

+0

말하기 요청 : 출시 빌드입니다. – Garp

답변

2

예, 컴파일러는 많은 문맥 정보를 정적 라이브러리에 포함합니다. 정적 lib는 매우 약한 코드 추상화이며, .obj 파일의 모음 일뿐입니다. 비열한 압축 비율의 .zip 파일로 생각하십시오.

해당 정보는 매우 까다로운 요구 사항이며 나머지 도구 체인은 종속되어 있습니다. 라이브러리 관리자와 마찬가지로 프로그램 데이터베이스를 병합해야합니다. 그리고 링커는 프로파일 기반 최적화 데이터로 바이너리를 재 빌드하기 위해 컴파일러의 백엔드를 다시 시작할 수 있어야합니다.

어느 것이 보입니까? /GL 컴파일 옵션은 컴파일러에서 사용한 명령 줄을 포함합니다. 따라서 PGO는 정확하게 동일한 컴파일 옵션을 사용하여 올바르게 수행 될 수 있습니다. 또한 클라이언트 프로그래머에게 편리한 매우이기 때문에 주목할만한 점은 라이브러리를 올바르게 링크 할 수 있도록 컴파일 옵션을 리버스 엔지니어링 할 수 있다는 것입니다. 모든 사람이 문서화하는 것을 잊어 버린 매우 중요한 세부 사항 :

이 정보를 합리적으로 제거 할 수 없으므로 PGO가 중요합니다. 이런 종류의 정보 공개가 마음에 들지 않는다면, 빌드 서버를 사용하거나 라이브러리 대신 바이너리를 제공하십시오. DLL.

+0

해명 해줘서 고마워, 한스. 이제 알겠다. 매우 감사 :) – Garp

관련 문제