2

Linux で Google の tcmalloc を試してみたいと思っています... ここに巨大なプロジェクトがあり、qmake によって生成された何百もの Makefile があります... gcc を tcmalloc に対してグローバルにリンクさせる方法を見つけたいと思います (そうするように) libcで)...これは可能ですか?それとも、すべての Makefile を編集する必要がありますか?

(何百ものファイルがあるため、すべての pro ファイルを編集するのは避けたいと思います)

(また、すでに LD_PRELOAD メソッドを試しましたが、うまくいきません)...

4

2 に答える 2

4

makefile はコンパイラ ( gcc/g++/cc/c++ ) にどのようにアクセスしますか?

明示的なパス ( /usr/bin/g++ ) ではなく、名前 ( g++ ) のみの場合は、任意のディレクトリに代替 g++ を作成し、そのディレクトリをパスに追加するだけです。

例:   ~/mytmpgccdir/g++   ファイルを作成します。

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

他の引数 ( $*:q )の前または後に、好きなエクストラ ( -Lfoo -lfoo ) を追加します。

次に、それをパスに追加して、通常どおりに作成します。

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

ps 明示的な名前による場合は、コマンドラインで上書きできる場合があります。次のようなもの:   make all GCC=~/mytmpgccdir/gcc

pps LD_PRELOAD を使用する場合は、プログラムを実行する前に、次のようなスクリプトで setenv LD_PRELOAD を実行することをお勧めします。そうしないと、/bin/ls、make、g++ などのすべてのコマンドで LD_PRELOAD を実行するのが簡単になります。

于 2009-10-23T08:41:46.113 に答える