이 질문에 이어 : how-do-i-check-if-gcc-is-performing-tail-recursion-optimization, gcc를 -fPIC와 함께 사용하면이 최적화가 파괴 된 것으로 나타났습니다. 공유 라이브러리를 만들었지 만 -fPIC 옵션이 필요하지 않은 것 같습니다.gcc -fPIC은 최적화 플래그가 붙어있는 것 같아
음, 내 질문은, 왜 - fPIC가 gcc 최적화를 변경합니까? 어떤 이유로 든 -fPIC을 보관해야합니까?
위치 종속 코드에서꼬리 재귀 최적화가 현재 스택 프레임을 재사용하고 교체하는 본질적 : 이러한 타겟 아키텍처 및 컴파일러 버전과 세부 없을
설명하는 동작을 재현 할 수있는 방법을 제공해 주시겠습니까? 그것은 옳지 않습니다. 그러나,'gcc'의 구현에있어서의 내부적 인 제약은 아마도 PIC 모드에서 최적화를 불가능하게 할 수도 있습니다 ... –
어떤 버전의 GCC입니까? 어떤 플랫폼? '-fPIC'은 생성 된 코드를 '위치 독립적 코드'(따라서 PIC)로 변경하기 때문에 '위치 종속 코드'와 다를 수 있습니다. 어떤 옵션을 사용하고 있습니까? –
아, 64 비트 서버에서 -fPIC이 필요합니다. – user212658