미친해커

Visual Studio 컴파일할 때 쓸 때 없는 Reference 없애기 본문

내 노가다 목록

Visual Studio 컴파일할 때 쓸 때 없는 Reference 없애기

미친해커 2022. 8. 11. 05:11
반응형

Visual Studio의 컴파일러인 MSVC로 컴파일을 하면 가끔 이런 이상한 코드가 추가되는 경우가 있다.

모든 함수가 jmp 어셈블리로 호출되도록 이루어져 있다.

위 이미지 처럼 모든 함수가 참조되어 있는 것을 확인할 수 있다. 그럼 해당 바이너리 내에서 호출하는 모든 함수들이 이 jmp를 거쳐서 호출되게 된다.

 

필자는 개인적으로 이걸 매우 싫어하는데 지금까지 이 때문에 Mingw를 애용했다고 해도 과언이 아니다. 하지만 이제야 해결 방법을 깨달았다. 이는 MSVC의 LINK의 최적화 옵션을 설정하면 된다.

[프로젝트 속성] -> [링커] -> [최적화] -> [참조] -> [/OPT:REF]

이 옵션을 설정해주면 저런 참조 코드가 생성되지 않는다. 커맨드 라인으로 한다면 다음과 같다.

cl.exe main.c /link /OPT:REF

반응형
Comments