我有一堆我需要分析的代码,我不知道该怎么做。我有一堆代码在这里和那里使用来自头文件的数学函数我已经包含了我的IDE附带的math.h。我被要求查看用多少空间来包含它。具体来说,编译器包括所有库函数或仅包含我们使用的库函数。没有创建目标文件。所以我认为库代码正在编译成单个文件。想出一个光滑的方法来解决这个问题吗?我不能只是注释掉包含因为那时代码不会编译而且我不会知道大小,如果我注释掉所有使用数学函数的行,它就不具有代表性。
答案 0 :(得分:0)
您可以使用objdump
命令查看目标文件中的各个符号及其所需的空间。
请注意,除非您正在进行静态编译,否则库方法通常不会复制到生成的二进制文件中,而只会被引用(并在加载程序时通过动态链接器引入)。
由于math.h
是标准C库的一部分,因此基本上保证该库的副本始终在内存中,因此动态链接的额外内存和空间要求是最小的。 (在静态链接期间,程序不直接需要的所有符号都将被丢弃,并且数学函数不会非常大,因此在那里使用也应该相当小)。
答案 1 :(得分:0)
如果您的标头具有函数的定义,并且如果它们只是声明,那么头文件中的代码将被编译到正在使用的.c的目标文件中。然后链接器将为每个符号找到一个定义,并将其放在可执行文件中,如果使用动态链接,操作系统将在运行时引入定义。