Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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
C 如何查找程序执行期间使用的库?_C_Gcc_Mingw - Fatal编程技术网

C 如何查找程序执行期间使用的库?

C 如何查找程序执行期间使用的库?,c,gcc,mingw,C,Gcc,Mingw,我想知道在程序执行过程中实际使用了哪些库和外部代码。我正在使用Inkscape的源代码,并对其将svg转换为png的命令行功能感兴趣。我想去掉这个执行路径中不需要的所有依赖项。 我目前正在使用gcov,但到目前为止,它只告诉我Inkscape的代码。 我的开发环境是Windows 2008,mingw gcc包 谢谢。将显示运行时加载的所有库,包括静态库和动态库。它还将向您显示在运行时主动接触的任何句柄 如果路径设置正确,还可以从UI生成和监视进程 当然,如果您有源代码,您可以在编译时搜索链接

我想知道在程序执行过程中实际使用了哪些库和外部代码。我正在使用Inkscape的源代码,并对其将svg转换为png的命令行功能感兴趣。我想去掉这个执行路径中不需要的所有依赖项。 我目前正在使用gcov,但到目前为止,它只告诉我Inkscape的代码。 我的开发环境是Windows 2008,mingw gcc包

谢谢。

将显示运行时加载的所有库,包括静态库和动态库。它还将向您显示在运行时主动接触的任何句柄

如果路径设置正确,还可以从UI生成和监视进程


当然,如果您有源代码,您可以在编译时搜索链接选项,检查makefile。对于运行时,中断gdb中的LoadLibrary方法。此外,gdb还有一个“info sharedlibrary”命令,您可以使用。

如果您在MinGW下有
ldd
,请使用它:
ldd可执行文件
或您可以使用
objdump-p|grepdll
甚至

gprof

我认为您唯一能做的就是尝试提取您感兴趣的部分,并尝试编译该部分,并根据需要添加依赖项,二进制文件将在执行时实际加载所有内容—不仅是所需的部分,我建议您还是任何图像制作库,因为使用库从头开始编写代码会更容易。我的记忆(因此不是答案)是在gdb下运行的,它告诉您何时打开动态库。它还可以显示打开了哪些文件,以及访问了哪些注册表项。了解检查了哪些文件有助于了解加载给定库的原因。