当我编译我的 C 程序时,我得到了为每个目标文件临时创建的某些文件。这些临时文件名为 utilities.o-fb62414b
等(即 something.o-suffix
,其中“something”是我的目标文件,后缀是字母数字字符)。我在任何地方都找不到这些临时文件的描述。当我在编译完成后 ls
时,它们不存在,它们不仅仅是 *.o
文件。如果我在编译发生时观看(或者在编译发生时从另一个终端执行 ls
),它们只会在窗口中短暂弹出。
我使用的编译选项是 -Wall -fmessage-length=0 -pg -O3
。
我也在使用 gsl
库。我在 Macbook Pro (10.12.6) 上使用 gcc
进行编译和链接。
关于这些临时文件是什么的任何帮助?
最佳答案
当你像这样编译和链接一个程序时:
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
扩展名并不重要:一个对象
无论扩展名如何,文件都是目标文件,链接器将识别
关于c - 在 C 编译期间创建的临时 'object' 文件(带有字母数字文件扩展名)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148142/