什么是临时对象'在C编译期间创建的文件(带有字母数字文件扩展名)?

时间:2018-01-08 10:12:40

标签: c gcc compilation object-files

当我编译我的C程序时,我得到了为每个目标文件临时创建的某些文件。这些临时文件的标题为utilities.o-fb62414b等(即something.o-suffix,其中'某些内容是我的目标文件,后缀是字母数字字符)。我无法在任何地方找到这些临时文件的描述。在编译完成后ls并且它们不仅仅是*.o文件时,它们不存在。如果我在编译时观察(或者在编译时从另一个终端执行ls),它们只会在窗口中短暂弹出。

我使用的编辑选项是-Wall -fmessage-length=0 -pg -O3。  我还使用gsl库。我在Macbook Pro(10.12.6)上使用gcc进行编译和链接。

有关这些临时文件的帮助吗?

1 个答案:

答案 0 :(得分:0)

编译和链接程序时如下:

gcc -o hellow hello_world.c

您使用的是GCC有助于扩展到必要编译的简写 步骤和链接步骤,就像你已经完成:

gcc -c -o hello_world.o hello_world.c   # compile
gcc -o hellow hello_world.o     # link
rm hello_world.o      # Delete the intermediate object file

但由于速记没有为中间对象指定任何名称 在编译步骤中的文件(如-o hello_world.o),GCC生成一个临时文件 写入目标文件的文件名。这就是你所看到的。

在Mac OS上,gcc默认为clang的别名。铛 在这方面表现得像真正的GCC(虽然是临时文件名 它生成符合真实GCC的不同模板。事实 他们在MacBook上没有.o扩展名并不重要:一个对象 file是一个目标文件,无论扩展名如何,链接器都会识别 就这样。