문제

Linux에서 Google의 TCMalloc을 실험하고 싶습니다 ... 여기에 수백 개의 Qmake가 Makefile의 수백 개의 Qmake가 생성 된 엄청난 프로젝트를 가지고 있습니다 ... GCC가 TCMalloc과 전 세계적으로 링크 할 수있는 방법을 찾고 싶습니다. LIBC로) ... 가능합니까? 아니면 모든 makefile을 편집해야합니까?

(수백 개가 있으므로 모든 프로 파일을 편집하지 않기를 원합니다)

(또한 우리는 이미 LD_PRELOAD 메소드를 시도했지만 제대로 작동하지 않습니다) ...

도움이 되었습니까?

해결책

makefiles는 컴파일러에 어떻게 액세스합니까 (GCC/G ++/CC/C ++)?

이름 만 (G ++), 명시적인 경로가 아닌 (/usr/bin/g ++), 원하는 디렉토리에서 교체 G ++를 만들고 그 디렉토리를 경로로 전환 할 수 있습니다.

EG : 생성 a ~/mytmpgccdir/g ++ 파일:

#!/bin/tcsh -f
exec /usr/bin/g++ -Lfoo -lfoo $*:q

엑스트라 추가 (-lfoo -lfoo) 당신은 다른 주장 전후에 좋아합니다 ($*: q).

그런 다음 경로에 미리 지불하고 정상적으로 만듭니다.

#tcsh version
% set path = ( ~/mytmpgccdir/  $path:q )
% make clean
% make

추신 : 명시 적으로 이름이 있다면 명령 줄에서 그것을 무시할 수 있습니다. 같은 것 : 모든 gcc = ~/mytmpgccdir/gcc를 만드십시오

PPS LD_PRELOAD를 사용하는 경우 프로그램을 실행하기 전에 LD_PRELOAD를 설정하기 위해 이와 같은 스크립트를 원할 수 있습니다. 그렇지 않으면 /bin /ls, make, g ++ 등과 같은 모든 명령에서 ld_preload'ing을 쉽게 감을 수 있습니다.

다른 팁

먼저 Qmake 문서를 확인하십시오. 특정 라이브러리를 항상 링크해야한다는 (.Pro 파일)을 지정하는 쉬운 방법이 있습니다.

또한 실험을 실험하기 때문에 LD_PRELOAD를 사용하기 만하면됩니다. 재 컴파일이 필요하지 않습니다.

LD_PRELOAD="/usr/lib/foo/libtcmalloc.so" ./your_program

Google의 TCMalloc 라이브러리와 "Your_Program"을 링크 할 필요는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top