Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 全球使用谷歌&x27;马洛克?_Linux_Qt_Gcc_Tcmalloc - Fatal编程技术网

Linux 全球使用谷歌&x27;马洛克?

Linux 全球使用谷歌&x27;马洛克?,linux,qt,gcc,tcmalloc,Linux,Qt,Gcc,Tcmalloc,我想在Linux上试用谷歌的tcmalloc。。。我这里有一个巨大的项目,有数百个qmake生成的Makefile。。。我想找到一种方法让gcc与tcmalloc进行全局链接(就像它与libc一样)。。。这可能吗?还是我必须编辑每个Makefile (我不想编辑所有的pro文件,因为它们有数百个) (另外,我们已经尝试过LD_PRELOAD方法,但效果不太好).首先,检查qmake文档。有一种简单的方法可以指定(在.pro文件中)某个库应始终链接到中 此外,由于您只是在试验,只需使用LD_预加载

我想在Linux上试用谷歌的tcmalloc。。。我这里有一个巨大的项目,有数百个qmake生成的Makefile。。。我想找到一种方法让gcc与tcmalloc进行全局链接(就像它与libc一样)。。。这可能吗?还是我必须编辑每个Makefile

(我不想编辑所有的pro文件,因为它们有数百个)


(另外,我们已经尝试过LD_PRELOAD方法,但效果不太好).

首先,检查qmake文档。有一种简单的方法可以指定(在.pro文件中)某个库应始终链接到中

此外,由于您只是在试验,只需使用LD_预加载-无需重新编译:

LD_PRELOAD=“/usr/lib/foo/libtcmalloc.so”。/your_程序


您不必将“您的_程序”链接到谷歌的tcmalloc库。

您的makefile如何访问编译器(gcc/g++/cc/c++

如果只是通过名称(g++),而不是通过显式路径(/usr/bin/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
p、 如果是显式名称,您可以在命令行上覆盖它。类似于:生成所有GCC=~/mytmpgccdir/GCC


p、 另外,如果您确实使用LD_PRELOAD,您可能希望在运行程序之前使用这样的脚本来设置env LD_PRELOAD。否则很容易在每个命令(如/bin/ls、make、g++)上加载LD_预加载。

你不能编辑qmake的.pro文件吗?你能提供关于LD_预加载无法正常工作的更多信息吗?当您尝试使用LD_PRELOAD时,您到底体验到了什么?看起来应用程序中只有一部分使用了tcmalloc。。。它的大部分allocs都不会去tcmalloc。。。我试图使用ltrace来验证这一点,但ltrace崩溃得相当快(顺便说一句,ltrace只显示了对qt的调用,而tcmalloc也只生成了一个显示qt代码的报告……然而,在这个应用程序中调用malloc的东西多得多)…-Nostlibs很有趣,但我需要一些全局性的方法来完成这项工作,否则我将重新编辑数百个makefiles或.pro文件……太棒了!我来试试看!