我是makefile概念的新手。所以请随时帮助我理解基础知识。
hellomake: hello.o hi.o mymain.o
gcc hello.o hi.o mymain.o
mymain.o: mymain.c
gcc -c mymain.c
hello.o: hello.c
gcc -c hello.c
hi.o: hi.c
gcc -c hi.c
如果我更改目标中的.o文件的顺序,那么发生的链接顺序是什么?请记住,我的mymain.o
取决于hello.o
和hi.o
答案 0 :(得分:4)
链接顺序没有变化;当.c / .o文件发生变化时,make将始终运行gcc hello.o hi.o mymain.o
,因为这就是你告诉它的目的。
请记住,make与C或链接无关,也不了解。它只运行您指定的命令,以生成构建目标所需的文件。在这种情况下,您指定了订单hello.o hi.o mymain.o
,因此make将运行。
答案 1 :(得分:0)
链接器从左到右处理文件。它不断创建未解析符号的动态列表,并使用对象(.o)库来解决它们。因此,您需要首先放置需要符号的静态库,然后解析库。