2013-10-13 1 views
0

내 프로그램에서 성능을 향상시키기 위해 일부 libc 기능을 직접 코딩하고 싶습니다 (그러나 모든 libc가 아닙니다!). 하지만 GCC는 컴파일 된 프로그램에서 libc 함수 대신 사용하거나 무시합니다.사용자 정의 함수가 libc의 함수 대신 작동 할 수 있습니까?

+0

GCC 매뉴얼에서 "weak link"또는 "weak symbol"을 확인하십시오. 아니면 그냥 LD_PRELOAD. –

+1

* 내 프로그램의 성능 향상 *이 질문을해야한다면 libc가 성능 병목 현상이 아닐 수도 있습니다. –

+0

libc 함수를 사용하여 성능을 향상시킬 수 있다고 생각하는 자존심이 있으면 문제없이 사용했던 나머지 사용자와 비교할 수 있습니다. –

답변

1

거의 모든 glibc의 공용 심볼은 weak linked입니다. 즉, 링크하는 동안 약한 심볼보다 우선 할 자체 구현을 제공 할 수 있습니다.

그래, 그렇습니다. 동일한 이름/인수를 가진 함수 만 정의하면 대신 사용할 수 있습니다. 헤더 파일을보고 함수의 실제 서명을 확인하십시오. 일부 함수는 다른 함수로 확장되는 매크로 일 수 있습니다.

재정의하려는 함수가 들어있는 공유 라이브러리를 만들고 동적 링커가 공유 라이브러리의 함수를 재정의하기 위해 미리로드하도록 할 수도 있습니다. 자세한 내용은 this question을 참조하십시오.

관련 문제