莫名其妙出现的.o文件,居然不是空的?【有趣的发现】

今天make一个OpenGL示例项目的代码,我想使用自己的库myLib.a,关于生成默认提供的tempLib的部分都删了,之后Makefile内容大概是

OPTIONS = -framework GLUT -framework OpenGL

DEFINES = -D GL_SILENCE_DEPRECATION

LIBS = -L../common -lmyLib

template: template.c initShader.o tempLib.o

gcc -o template template.c initShader.o $(LIBS) $(OPTIONS) $(DEFINES)

initShader.o: initShader.c initShader.h

gcc -c initShader.c $(DEFINES)

clean:

rm -f template initShader.o tempLib.o

结果我发现怎么目录下还生成一个tempLib.o文件呢?找来找去发现是因为template后面还跟着一个tempLib.o,所以就生成了。 这个文件既然没有任何gcc命令来生成它,怎么就出现了呢?(其实我不知道)是不是make自己生成的? 我就进一步思考,那这个文件既然没有任何实质性内容,应该是空的吧(0byte) 后来发现怎么有336byte? 于是打算查看一下,用了经典代码objdump -D tempLib.o 结果如下:

tempLib.o: file format mach-o arm64

我在期待什么…(你在期待什么…) 好的,那倒也合理。不过make为什么要创建这个文件?留给评论区讨论吧

关于这个makefile我还有一个搞了十几分钟的事情gcc -l你让我头好大啊! 实在不应该(((

ir, culu ; )

仅允许跳转至本网站的链接引用。未经授权不得转载、复制或用于任何形式的商业或非商业用途。
使用 Hugo 构建
主题 StackJimmy 设计