makefile中链接的顺序是什么?

时间:2015-07-10 14:02:30

标签: c makefile

我是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.ohi.o

2 个答案:

答案 0 :(得分:4)

链接顺序没有变化;当.c / .o文件发生变化时,make将始终运行gcc hello.o hi.o mymain.o,因为这就是你告诉它的目的。

请记住,make与C或链接无关,也不了解。它只运行您指定的命令,以生成构建目标所需的文件。在这种情况下,您指定了订单hello.o hi.o mymain.o,因此make将运行。

答案 1 :(得分:0)

链接器从左到右处理文件。它不断创建未解析符号的动态列表,并使用对象(.o)库来解决它们。因此,您需要首先放置需要符号的静态库,然后解析库。